使用R在数据框中创建新列

时间:2018-07-03 11:22:23

标签: r for-loop dataframe

我下面有一个数据框;

NPA_Jan Risk_Jan NAP_Feb Risk_Feb
Yes     High     No      Medium
No       Low      No      Low
No       High     Yes     High
Yes      High     Yes     High
Yes      Low      No      Low

我期望下面的输出:

NPA_Jan_New   Risk_Jan_New NPA_Feb_New Risk_Feb_New
1             1            0              0
0             0            0              0
0             1            1              1
1             1            1              1
1             0            0              0

只要NPA为“是”,而风险为“高”,则应标记1。

2 个答案:

答案 0 :(得分:2)

最简单的方法就是大卫所说的

df.new <- as.data.frame((df == "Yes" | df == "High") + 0)
colnames(df.new) <- paste(colnames(df.new), '_new', sep='')

答案 1 :(得分:1)

一个选项正在使用

out <- +(sapply(df, `%in%`, c("Yes", "High")))
colnames(out) <- paste0(colnames(df), "_new")
out
#     NPA_Jan_new Risk_Jan_new NAP_Feb_new Risk_Feb_new
#[1,]           1            1           0            0
#[2,]           0            0           0            0
#[3,]           0            1           1            1
#[4,]           1            1           1            1
#[5,]           1            0           0            0