r - 如何引用 R 中的所有其他列?
问题描述
我正在处理类似于以下数据的数据:
ID <- c("A", "B", "C", "D", "E")
x1 <- c(1,1,1,1,0)
x2 <- c(0,0,1,2,2)
x3 <- c(0,0,0,0,0)
x4 <- c(0,0,0,0,0)
df <- data.frame(ID, x1, x2, x3, x4)
看起来像:
> df
ID x1 x2 x3 x4
1 A 1 0 0 0
2 B 1 0 0 0
3 C 1 1 0 0
4 D 1 2 0 0
5 E 0 2 0 0
我想创建一个新列,它是条件语句的乘积: if x1 == 1
and all the other columns are equal to 0
, then it is coded "Positive"
。
如何在不写出条件语句中的其余列的情况下引用除 x1 之外的所有其他列?
解决方案
基数 R:
df$new <- ifelse(df$x1==1 & ## check x1 condition
rowSums(df[,3:5]!=0)==0), ## add the logical outcomes by row
"Positive",
"not_Positive"))
第二行有点棘手。
df[,3:5]
(或df[,-(1:2)]
)选择除前两列之外的所有列。你也可以subset(df,select=x2:x4)
在这里使用(虽然?subset
说“警告:这是一个旨在交互使用的便利功能......”)!=0
测试值是否为 0,返回TRUE
或FALSE
rowSums()
将值相加(FALSE
→0,TRUE
→1)- 如果在转换为数字时该行中的所有逻辑值都为零,则行总和为零(→ 所有 FALSE → 无不等于零)
如果可能有NA
值,那么您将需要na.rm=TRUE
在您的rowSums()
规范中
推荐阅读
- ios - 将 animatingDifferences 设置为 true 时,使用 UITableViewDiffableDataSource 将单元格移动到新部分会使应用程序崩溃
- spring-security - 如何绕过spring webflux security中的一些url?
- javascript - Uncaught Invariant Violation:函数组件不能有引用。你的意思是使用 React.forwardRef() 吗?
- angular - 在 component.html (Angular) 中构建一个字符串
- reactjs - 错误:操作必须是普通对象。使用自定义中间件进行异步操作。如何解决?
- symfony - EasyAdmin 3 中一个 CrudController 中 2 个实体的字段
- r - Replace NA with random numbers within `group_by` in dplyr
- javascript - 如何在 java 中编写这个 if() 语句
- azure-web-app-service - 使用 KeyCloak 进行身份验证的 Azure 应用服务
- python - Django-文件下载问题