【发布时间】:2021-11-07 05:44:38
【问题描述】:
我是 R 新手。我想通过多个数据帧重新编码同一个变量。但我不断收到错误。请参阅以下 3 个小数据帧的示例。我想在 3 个名为 Q2_nom 的 dfs 中的每一个中创建一个新变量,如果 Q2 大于或小于平均值(Q2),则将其重新编码为“1”或“0”。请在下面查看我的代码。
df1:
Q1 <- c('ABC','DEF','GHI', 'DEF','JKL','XYZ')
Q2 <- c(21000, 23400, 26800, 26000, 20400, 30800)
df1 <- data.frame(Q1, Q2)
df2:
Q1 <- c('DEF','JKL','XYZ', 'ABC', 'MNO', 'PQR')
Q2 <- c(30100, 20200, 15800, 21000, 23400, 26800)
df2 <- data.frame(Q1, Q2)
df3:
Q1 <- c('ABC','DEF','GHI', 'XYZ', 'MNO', 'PQR')
Q2 <- c(17800, 23060, 13080, 27000, 22400, 26500)
df3 <- data.frame(Q1, Q2)
a <- c("Q1", "Q2", "Q3")
for (i in a) {
newname <- paste(i)
newname$Q2_mean_nom <- ifelse(newmame$Q2 > mean(newname$Q2, na.rm = TRUE), "1", "0")
}
我注意到在执行上述操作时,newname 不是 df,因此平均值不会运行。有没有办法让循环将 newname 识别为 df?
我尝试使用列表,但也没有用。
newlist <- c(df1, df2, df3)
for (i in 1:length(newlist)) {
newlist[[i]]$Q2_mean_nom <- ifelse(newlist[[i]]$Q2 > mean(newlist[[i]]$Q2, na.rm = TRUE),
"1", "0")
}
请帮忙。非常感谢!
【问题讨论】: