r - 根据另一列中的值计算多列(但对于每一行)中的出现次数
问题描述
我目前正在尝试分析一个数据集,其中我有一列给我每行感兴趣的值(称为 value_needed 的列),然后是一堆具有值的列(实际上大约 150),还有很多NA的。对于每一行,我想计算所有其他列中 value_needed 列中该值的出现次数,这里是 position_1:position_6。
下面是一些假数据:
position_1 <- c(6, -8, 8, 0, 0, -6)
position_2 <- c(NA, 6, -8, 8, 8, 0)
position_3 <- c(NA, NA, 6, -8, 0, 8)
position_4 <- c(NA, NA, NA, 6, -8, -8)
position_5 <- c(NA, NA, NA, NA, 6, 8)
position_6 <- c(NA, NA, NA, NA, NA, 6)
value_needed <- c(0, 6, -8, 8, 0, 8)
df <- data.frame(position_1, position_2, position_3,position_4, position_5, position_6,value_needed)
在理想情况下,我需要创建一个新列(将其命名为 occ),该列计算该特定行中所有位置列中 value_needed 列中值的出现次数。
上面这个假数据集的输出将是:
occ = c(0,1,1,1,2,1)
如果有人有任何提示,我真的很感激。谢谢
解决方案
base
解决方案
df$occ <- rowSums(df[1:6] == df$value_needed, na.rm = T)
dplyr
解决方案
library(dplyr)
df %>%
rowwise() %>%
mutate(occ = sum(c_across(pos_1:pos_6) == value_needed, na.rm = T)) %>%
ungroup()
输出
# # A tibble: 6 x 8
# pos_1 pos_2 pos_3 pos_4 pos_5 pos_6 value_needed occ
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
# 1 6 NA NA NA NA NA 0 0
# 2 -8 6 NA NA NA NA 6 1
# 3 8 -8 6 NA NA NA -8 1
# 4 0 8 -8 6 NA NA 8 1
# 5 0 8 0 -8 6 NA 0 2
# 6 -6 0 8 -8 8 6 8 2
推荐阅读
- javascript - 无法导入多于一级的模块
- javascript - 通过将脚本分配给按钮来关闭在新选项卡中打开的 google 工作表
- visual-studio-code - docker vscode节点检查未绑定
- mysql - 在数据库(MYSQL)上保存字符串列表
- r - 如何获取用户从样本中选择的值?
- javascript - 如何将值从父级复制到数组中的子级
- laravel - laravel 8 在 Godaddy 上托管项目时找不到 404 文件错误
- python - 为什么星形不是完全着色的?
- excel - Pandas:如何使 openpyxl 成为所有 read_excel 操作的默认引擎?
- python - 如何使用“for-loop”和列添加在数据框中生成列?