【发布时间】:2018-03-06 22:03:29
【问题描述】:
我有一个包含 ID、X 和 Y 列的数据框 df
ID = c(1,1,2,2)
X = c(1,0.4,0.8,0.1)
Y = c(0.5,0.5,0.7,0.7)
df <- data.frame(ID,X,Y)
ID X Y
1 1.0 0.5
1 0.4 0.5
2 0.8 0.7
2 0.1 0.7
我想获得两个新列:
- Xg 当 X 大于 Y 时等于 X,否则等于 NA
-
Xl 在 X 小于 Y 时等于 X,否则为 NA。也就是说,
ID X Y Xg Xl 1 1.0 0.5 1.0 NA 1 0.4 0.5 NA 0.4 2 0.8 0.7 0.8 NA 2 0.1 0.7 NA 0.1
【问题讨论】:
-
了解
ifelse? -
您说您有一个数据框,但您将数据绑定为 data.table。你的意思是
df <- data.frame(ID,X,Y)?还是您在寻找 data.table 解决方案? -
@dshkol 因为它打印时没有在 data.tables 中看到通常的
1:,所以我将它编辑到 data.frame。 -
查看
case_when包中的dplyr。 -
感谢您的建议。我尝试了以下方法,但仍然出现错误,因为我的原始数据帧在 X 和 Y 中具有 NA:df1= mutate(df, Xg = ifelse(X > Y, X, NA))。