首页 > 解决方案 > 使用 R 更改 Excel 工作表中的变量名称

问题描述

我想使用 R 更改 Excel 表中的变量名称。例如,在随附的屏幕截图中,我想用 /t/ 替换“pata”,用 /d/ 替换“pada”,用 / 替换“paca” C/。我使用 R 的 sub 和 gsub 函数在我的 csv 文件中进行更改,但我更愿意替换我的 df 中的所有名称,然后将 df 导出为 csv 文件。

df<- read_csv("change_variables_names.csv")
sub('pata','/t/', df$Word)
gsub('pata','/t/', df$Word)

在此处输入图像描述

标签: rexceldplyrgsub

解决方案


这是一个解决方案dplyr

library(dplyr)
library(openxlsx)

data %>% 
  mutate(Word = case_when(Word == "pata" ~ "/t/",
                          Word == "pada" ~ "/d/",
                          Word == "paca" ~ "/c/")) %>% 
  write.csv(., "new_variable_names.csv")

这是base R使用lapplyand的解决方案gsub

data <- data.frame(lapply(data, function(x) gsub("pata", "/t/", x)))
data <- data.frame(lapply(data, function(x) gsub("pada", "/d/", x)))
data <- data.frame(lapply(data, function(x) gsub("paca", "/c/", x)))

write.csv(data, "new_variables.csv")

无论哪种方式都给我们:

 Word Repetition Value
1  /t/          1   233
2  /t/          2   433
3  /t/          3   552
4  /d/          1   234
5  /d/          2   567
6  /d/          3   436
7  /c/          1   765
8  /c/          2   231
9  /c/          3   567

数据:

structure(list(Word = c("pata", "pata", "pata", "pada", "pada", 
"pada", "paca", "paca", "paca"), Repetition = c(1, 2, 3, 1, 2, 
3, 1, 2, 3), Value = c(233, 433, 552, 234, 567, 436, 765, 231, 
567)), class = "data.frame", row.names = c(NA, -9L))

推荐阅读