我正在尝试在r中创建一个函数或循环,它可以遍历特定字符串的列列表,即'123',并创建一个带有指示符变量的新列,即如果字符串是0则为0或1出现在已定义的列中。
请参阅下面的示例 - 我想创建一个函数/循环,它将检测在df1到df5的任何列中是否找到字符串'123',如果找到该字符串,则new_column将为1,否则将为0
index df1 df2 df3 df4 df5 new_column
1 1 123 999 999 999 999 1
2 2 999 123 999 999 999 1
3 3 123 999 999 999 999 1
4 4 999 999 999 999 999 0
5 5 999 999 123 999 999 1
6 6 999 999 999 999 999 0
答案 0 :(得分:0)
一种可能的解决方案(确保123为numeric
):
df <- cbind(df,new_c = sapply(1:length(df),function(x) ifelse(123 %in% df[x,],1,0)))
> df
index df1 df2 df3 df4 df5 new_c
1 1 123 999 999 999 999 1
2 2 999 123 999 999 999 1
3 3 123 999 999 999 999 1
4 4 999 999 999 999 999 0
5 5 999 999 123 999 999 1
6 6 999 999 999 999 999 0
数据:
> df
index df1 df2 df3 df4 df5
1 1 123 999 999 999 999
2 2 999 123 999 999 999
3 3 123 999 999 999 999
4 4 999 999 999 999 999
5 5 999 999 123 999 999
6 6 999 999 999 999 999
答案 1 :(得分:0)
我们可以将Reduce
与|
df$new_column <- +(Reduce(`|`, lapply(df[2:6], `==`, 123)))