【发布时间】:2020-08-21 11:07:55
【问题描述】:
我有一个数据框,df:
df <- structure(list(ID = c("ID1", "ID2", "ID3", "ID4", "ID5", "ID6"
), val1 = c(0, 1, 0, 0, 0, 0), sig1 = c(0.76, 0.15, 0.35, 0.66,
0.7, 0.72), val2 = c(0.25, 0.81, 0.21, 0.06, 0.18, NA), sig2 = c(0.65,
0.09, 0.55, 0.88, 0.09, NA), val3 = c(0.26, 0.24, 0.16, -0.1,
0.22, NA), sig3 = c(0.64, 0.62, 0.65, 0.8, 0.04, NA)), row.names = c(NA,
6L), class = "data.frame")
> df
ID val1 sig1 val2 sig2 val3 sig3
1 ID1 0 0.76 0.25 0.65 0.26 0.64
2 ID2 1 0.15 0.81 0.09 0.24 0.62
3 ID3 0 0.35 0.21 0.55 0.16 0.65
4 ID4 0 0.66 0.06 0.88 -0.10 0.80
5 ID5 0 0.70 0.18 0.09 0.22 0.04
6 ID6 0 0.72 NA NA NA NA
此数据帧包含每个 ID 号的 3 对数据 - val1 和 sig1、val2 和 sig2 和 val3 和 sig3。
我想再添加 2 列。我希望第一列 (first_val) 说明第一个“val”列的名称,其中关联的“sig”列小于 0.5。在第二列 (first_val_value) 中,我想粘贴该 ID 的关联 val1 或 val2 值。
所以例如 -
对于ID1,所有sig 值都不小于0.5,因此first_val 列条目应为“-”。
对于ID2,sig1 小于 0.5,因此first_val 列条目应为“val1”。
对于ID3,sig1 小于 0.5,因此first_val 列条目应为“val1”。
对于ID4,所有sig 值都不小于0.5,因此first_val 列条目应为“-”。
对于ID5,sig2 小于 0.5,因此 first_val 列条目应为“val2”。
对于ID6,sig 的值都不小于 0.5,因此first_val 列条目应为“-”。
所以我想要的数据框看起来像这样:
> df
ID val1 sig1 val2 sig2 val3 sig3 first_val first_val_value
1 ID1 0 0.76 0.25 0.65 0.26 0.64 - -
2 ID2 1 0.15 0.81 0.09 0.24 0.62 val1 1
3 ID3 0 0.35 0.21 0.55 0.16 0.65 val1 0
4 ID4 0 0.66 0.06 0.88 -0.10 0.80 - -
5 ID5 0 0.70 0.18 0.09 0.22 0.04 val2 0.18
6 ID6 0 0.72 NA NA NA NA - -
构建此数据框的最佳方法是什么?
【问题讨论】:
标签: r