根据R中第三个字段的条件,设置数据帧新字段的值等于另一个字段

时间:2016-05-13 15:54:16

标签: r dataframe

如果我想在给定数据帧中添加一个字段,并根据不同(现有)字段上的条件将其设置为相同数据帧中的现有字段。

我知道这有效:

is.even <- function(x) x %% 2 == 0

df <- data.frame(a = c(1,2,3,4,5,6),
                b = c("A","B","C","D","E","F"))

df$test[is.even(df$a)] <- as.character(df[is.even(df$a), "b"])

> df
  a b test
1 1 A   NA
2 2 B    B
3 3 C   NA
4 4 D    D
5 5 E   NA
6 6 F    F

但我觉得这可以比这更好。

1 个答案:

答案 0 :(得分:2)

使用data.table非常简单

library(data.table)
dt = data.table(a = c(1,2,3,4,5,6),
                b = c("A","B","C","D","E","F"))

dt[is.even(a), test := b]

> dt
   a b test
1: 1 A   NA
2: 2 B    B
3: 3 C   NA
4: 4 D    D
5: 5 E   NA
6: 6 F    F