r - R如何根据现有数据创建列/特征
问题描述
我有一个数据框df
:
userID Score Task_Alpha Task_Beta Task_Charlie Task_Delta
3108 -8.00 Easy Easy Easy Easy
3207 3.00 Hard Easy Match Match
3350 5.78 Hard Easy Hard Hard
3961 10.00 Easy NA Hard Hard
4021 10.00 Easy Easy NA Hard
1. userID is factor variable
2. Score is numeric
3. All the 'Task_' features are factor variables with possible values 'Hard', 'Easy', 'Match' or NA
我想创建每个新列userID
,其中包含该Task_
功能的每个可能状态的出现计数。对于上面的玩具示例,所需的输出将是三个新列,将附加在如下末尾df
:
userID Hard Match Easy
3108 0 0 4
3207 1 2 1
3350 3 0 1
3961 2 0 1
4021 1 0 2
更新: 此问题不是重复的,原始问题的相关部分已移至: R How to count the factors in ordered sequence
解决方案
您可以将数据帧与or函数df
中的每个值进行比较,计算结果布尔矩阵的逐行总和,然后将输出与原始数据帧组合:map*
*apply
library(dplyr)
library(purrr)
facs <- c("Easy", "Match", "Hard")
bind_cols(df, set_names(map_dfc(facs, ~ rowSums(df == ., na.rm = T)), facs))
#### OUTPUT ####
userID Score Task_Alpha Task_Beta Task_Charlie Task_Delta Easy Match Hard
1 3108 -8.00 Easy Easy Easy Easy 4 0 0
2 3207 3.00 Hard Easy Match Match 1 2 1
3 3350 5.78 Hard Easy Hard Hard 1 0 3
4 3961 10.00 Easy <NA> Hard Hard 1 0 2
5 4021 10.00 Easy Easy <NA> Hard 2 0 1
推荐阅读
- reactjs - 条件按钮真假反应
- r - 绘制 R 中随时间推移的累积发病率
- angular - Chrome 开发人员工具中不可用的 Angular 12 调试源代码在 Angular 11 中很好
- php - $_Files 在 php 8 上传新手问题中为空
- flutter - 链接文本以改变屏幕颤动
- javascript - 动态更改在 WordPress 中创建的菜单中的链接
- php - 从 cURLed HTML 文件中提取 JSON 的问题
- ethernet - 我可以使用以太网电缆获取另一台计算机的 MAC 地址吗?
- javascript - 在 plotly 中自定义“x 统一”悬停标签
- java - 如何从目标目录获取图像?可以将图片存储在此目录中吗?如果不能,我如何将它存储在 Webapp 文件夹中?