r - 嵌套子集
问题描述
我有以下数据框
Library(dplyr)
ID <- c(1,1,1,2,2,2,2,3,3)
Tag <- c(1,2,6,1,3,4,6,4,3)
Value <- c(5,9,3,3,5,6,4,8,9)
DF <- data.frame(ID,Tag,Value)
ID Tag Value
1 1 1 5
2 1 2 9
3 1 6 3
4 2 1 3
5 2 3 5
6 2 4 6
7 2 6 4
8 3 4 8
9 3 3 9
我想执行以下操作 1)按行 ID 分组 2)将对应于特定标记的值分配给新列。在以下示例中,我将标记 6 的值按 ID 分配给新列
ID Tag Value New_Value
1 1 1 5 3
2 1 2 9 3
3 1 6 3 3
4 2 1 3 4
5 2 3 5 4
6 2 4 6 4
7 2 6 4 4
8 3 4 8 NA
9 3 3 9 NA
据我所知,我需要对每个组中的数据进行子集化以获得标记 6 的值。这是我的代码和错误消息
DF %>% group_by(ID) %>% mutate(New_Value = select(filter(.,Tag==6),Value))
Adding missing grouping variables: `ID`
Error: Column `New_Value` is of unsupported class data.frame
另一种可能的解决方案是使用标签 6 的 ID 和值创建一个新数据框,并将其与 DF 连接。但是,我相信仅使用 dplyr 会有更好的通用解决方案。
如果您能帮助我了解如何在这种情况下执行嵌套子集,我将不胜感激
谢谢
解决方案
假设Tag
在组内是唯一的,您可以这样做:
library(dplyr)
DF %>%
group_by(ID) %>%
mutate(New_Value = ifelse(any(Tag == 6), Value[Tag == 6], NA))
# A tibble: 9 x 4
# Groups: ID [3]
ID Tag Value New_Value
<dbl> <dbl> <dbl> <dbl>
1 1 1 5 3
2 1 2 9 3
3 1 6 3 3
4 2 1 3 4
5 2 3 5 4
6 2 4 6 4
7 2 6 4 4
8 3 4 8 NA
9 3 3 9 NA
推荐阅读
- python - Python pandas DataFrame:检查n个元素是否具有连续值?
- reactjs - API调用数据库后上下文不更新
- r - 像 RStudio 一样缩进 VSCode
- python - 无法在另一个 python 文件中获取一个 python 文件的全局变量值
- json - 如何在 amcharts v4 中通过 json config 手动设置 LineSeries 的颜色?
- python - 如何使用python检索Pulumi资源的属性a?
- r - glmnet 变量重要性 | `vip` 与 `varImp`
- unity3d - 仍然可以安装 hololens 第一代模拟器吗?
- javascript - 使用 console.log 在画布中进行 javascript 故障排除
- c - 斐波那契函数与 C