r - R Tidyverse - 确定符合标准的选择列的比例
问题描述
我有这样的数据:
x1 = seq(0, 2, length=5)
x2 = seq(1, 2, length=5)
x3 = seq(0, 1, length=5)
df = data.frame(rbind(x1,x2,x3))
我想获得值小于 1 的特定列(基于名称)的比例。以下选择名称中包含“x”的变量,并对列中的值求和。
df <- df %>%
mutate(sumVar = rowSums(select(., contains("x")), na.rm = TRUE))
有没有办法在这个设置中包含 ifelse 逻辑来确定值 < 1 的列的比例(而不是像我在这里计算总和)?我正在使用包含功能,因为我想跨大量列进行计算,这些列不一定按顺序排列,但名称中具有相同的模式。
解决方案
您可以rowMeans()
在以下条件下使用:
library(dplyr)
df %>%
mutate(propVar = rowMeans(select(., contains("x")) < 1))
x1 x2 x3 propVar
1 0.0 1.00 0.00 0.6666667
2 0.5 1.25 0.25 0.6666667
3 1.0 1.50 0.50 0.3333333
4 1.5 1.75 0.75 0.3333333
5 2.0 2.00 1.00 0.0000000
推荐阅读
- c - 我是否正确地在函数中实现指针?
- kubernetes - Kubernetes Secret 是如何挂载的?
- android - 启动一个fragment就是重启父fragment
- python-3.x - Snakemake - 如何使用文件的每一行作为输入?
- python - 有多个存储桶时如何从s3指定存储桶路径
- c# - 在 Azure Functions 中运行时 Environment.Exit 有什么作用?
- python - 无法在 matplotlib 图中获取正确的文本边界坐标
- android - 如何以编程方式添加另一种语言
- javascript - ApolloGraphql 中的批处理请求,如果一个失败,它们都失败了吗?
- ssl - 使用 SSL 无法确定 Kafka 中 inter.broker.listener.name 的设置