R 在数据框中查找值(因子变量的rowwise)

标签 r tidyverse

我有一个带有这样的字符串(因子)变量的 df

id v1 v2 v3 v4
1  1  1  1  0
1  0  0  0  0
1  1  1  1  0
1  1  1  1  0
1  1  1  1  0

我想要的是创建一个等于 1 或 0(数字)的新列,如果 1 出现在列列表中,例如 (v2, v3, v4)
id v1 v2 v3 v4 lu
1  1  1  1  0  1
2  0  0  0  0  0
3  1  1  1  0  1
4  0  0  1  0  1
5  1  0  1  0  1

我不想转换为数字(因为我需要它们用于将来的分析)所以像
df <- df %>% mutate(lu = select(., v2:v4) %>% rowSums(na.rm = TRUE))
df <- df %>% mutate(lu = if_else(lu_1 > 0, 1, lu))

不可能。实际上要考虑的变量列表相当长(大约 150 个)

谢谢!

最佳答案

嗨,我不知道你是否想要这样的东西。我不擅长 dplyr 所以这是一个基本的 R 版本

虚拟数据:

a <-as.character(sample(0:1,100,replace = T))
b <-as.character(sample(0:1,100,replace = T))
c <-as.character(sample(0:1,100,replace = T))
d <-as.character(sample(0:1,100,replace = T))

df <- as.data.frame(cbind(a,b,c,d), stringsAsFactors = T)

实际代码:
test <- function(x) {
  out <- sum(as.numeric(x))
  ifelse(out>0,1,0)
}

df$lu <- as.factor(apply(df,MARGIN = 1, test))

输出:
id  a   b   c   d   lu
1   0   1   0   0   1
2   0   1   0   0   1
3   0   1   0   0   1
4   0   1   0   1   1
5   0   0   0   0   0

关于R 在数据框中查找值(因子变量的rowwise),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62367339/

相关文章:

javascript - 如何使用更新的 UI 在 Shiny 中格式化 numericInput?

r - 使用 R,将多个卡方列联表测试应用于分组数据框,并添加包含测试 p 值的新列

r - 使用 group_by 创建相关性和 p 值的数据框,然后在 R 中绘制误差条

python - 生成彩票号码 - 将 R 语句转换为 Python

r - 无法将参数传递给自己的函数中的函数

r - data.table 上所有行的按组列的条件平均值

r - 如何获得对观察运行函数的多个结果?

r - tidyr 完整案例嵌套误解

r - 如何计算R中数据框中列表列的每一列中的元素

r - 将 arima 生成的预测时间转换为标准日期时间