【发布时间】:2019-07-23 19:51:20
【问题描述】:
我有大约 60 个不同的列,其中 30 个列按名称对应于其余 30 个列。我想根据其他对应的值替换这 30 个列值。
- 样本数据:
df.wide<-data.frame(
title=c("A","B","C","D"),
IM.A=c(0.5,0.1,4.6,5.6),
LV.A=c(0.7,0,2.5,5),
IM.B=c(0.2,0.4,2.6,2.2),
LV.B=c(1,2,4.5,5),
IM.C=c(2,1,3,4),
LV.C=c(3,2,5,1)
)
我有更多列 - IM.D~~ LM.D~~ 用于数据中的每个标题。
- 我已将数据重新整形为 long 以提取唯一的列名:
df.long <- gather(df.wide, element,value, IM.A:LV.C)
df.long <- select(df.long, c("element"))
df.long <- unique(df.long)
- 我已将 LV 和 IM 分成不同的数据。
lv <- as.data.frame(df.long[grep("LV", df.long$element), ])
im <- as.data.frame(df.long[grep("IM", df.long$element), ])
- 我不知道如何从这里开始,但基本上我想将列 LV 值更改为 0,如果其对应的 IM 值小于 2.5 并且我还没有在 Internet 上找到解决方案。李>
最终的数据如下所示:
df.wide<-data.frame(
title=c("A","B","C","D"),
IM.A=c(0.5,0.1,4.6,5.6),
LV.A=c(0,0,2.5,5),
IM.B=c(0.2,0.4,2.6,2.2),
LV.B=c(0,0,4.5,0),
IM.C=c(2,1,3,4),
LV.C=c(0,0,5,1)
)
【问题讨论】: