r - 如何根据R中多个变量的条件将新变量添加到现有数据框中?
问题描述
在 R 中,我有一个包含多个列的数据集,其中出现“真”和“假”这两个词,但在这些变量 id1 到 id4 的随机位置。变量 id1 和 id4 也有一些缺失值 (NA)。
id1 <- c('abc', 'false', 198,201)
id2 <- c(763,723,'true',323)
id3 <- c('true', 'def', 223,'hij')
id4 <- c(627,376,237,'false')
df1 <- data.frame(id1,id2,id3,id4)
我想在我的数据框中添加一个变量“id5”,它表示特定行的真或假。我将如何最好地做到这一点?
期望的结果:
id1 id2 id3 id4 id5
1 abc 763 true 627 true
2 false 723 def 376 false
3 198 true 223 237 true
4 201 323 hij false false
解决方案
由于其中一个值始终存在于我们可以使用的数据中rowSums
。
df1$id5 <- rowSums(df1 == 'true', na.rm = TRUE) > 0
df1
# id1 id2 id3 id4 id5
#1 abc 763 true 627 TRUE
#2 false 723 def 376 FALSE
#3 198 true 223 237 TRUE
#4 201 323 hij false FALSE
我们也可以使用 row-wise apply
:
apply(df1 == 'true', 1, any, na.rm = TRUE)
推荐阅读
- keras - 使用提前停止 - gridsearchcv - kerasregressor
- c# - C# JSON 西班牙语是 UTF8 但德语是 UTF7 加载
- javascript - 不知道我的 javascript 待办事项列表有什么问题
- kubernetes - 如何一次重启 1000 个 pod
- python - crontab root 命令与普通 root 命令的区别
- c++ - 编译器总是打印一个十六进制/八进制数
- java - 通用 java.time 属性的 Jackson 序列化不适用于 Android API 21(但适用于 29)
- c++ - 如何使用 QSortFilterProxyModel::sort 对 Qlist 中的数据进行排序
- c# - 如何使用 MySqlCommand 的参数获取查询
- node.js - AWS Lambda NodeJS 写入 S3 在本地和服务器上的行为不同