【发布时间】:2018-10-08 18:24:23
【问题描述】:
我目前正在使用case_when 在我的数据中定义一个新变量:
data[,46] <- NA
data[,46] <- case_when(
data[,35] == 1 ~ data[,36],
data[,35] == 2 ~ data[,37],
data[,35] == 3 ~ data[,38],
data[,35] == 4 ~ data[,39],
data[,35] == 5 ~ data[,40],
data[,35] == 6 ~ data[,41],
data[,35] == 7 ~ data[,42],
data[,35] == 8 ~ data[,43],
data[,35] == 9 ~ data[,44],
data[,35] == 10 ~ data[,45]
)
我正在尝试编写一个循环来提高此功能的效率,但遇到了一些麻烦。这是我尝试过的:
for (j in 1:10) {
data[,46] <- case_when(
data[,35] == j ~ data[,35+j]
)
}
但是,这将为我的所有 data[,46] 值返回 NA。对可能出了什么问题有任何想法吗?如有必要,我很乐意提供示例数据,但我认为这与我犯了一个简单的编程错误更相关。提前致谢!
【问题讨论】:
-
这似乎是一个更好的问题,因此可以通过使用
tidyr塑造您的数据来解决。如果您提供一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,那么提供帮助会更容易。展示您的真正目标,而不仅仅是您尝试编写的解决问题的代码。 -
随便
data[, 35] <- data[, 35 + data[, 35]]? -
@RuiBarradas,发表您的评论作为答案...??
-
@BenBolker 会的。