提问人:Danika 提问时间:4/28/2023 更新时间:4/28/2023 访问量:45
如何根据组值创建新变量?
How to create a new variable based on group values?
问:
我正在处理一些调查数据,我正在尝试创建一个新的变量“人口”,即一个群体中的人数(更具体地说是性别和种族)。我已经能够使用该信息创建一个新的数据帧,但我无法将这些值分配回原始数据。
我尝试了以下代码:
#create new dataframe with population by groups
population <- age_data %>% group_by(RACE, SEX) %>% summarise(count = n())
#create new variable with the count
age_data$population <- ifelse(population$RACE== age_data$RACE& population$SEX == age_data$SEX, population$count, NA)
我也尝试过类似的语言和基本语法,但我会得到以下输出的一些变体:case_when()
Error in `stop_vctrs()`:
! Can't recycle `..1` (size 24) to match `..2` (size 169588).
Backtrace:
1. base::ifelse(...)
5. vctrs::stop_incompatible_size(...)
6. vctrs:::stop_incompatible(...)
7. vctrs:::stop_vctrs(...)
我想我明白问题在于我只创建了 24 个类别,但我找不到解决这个问题的方法。
以下是示例(简化)数据:
SEX RACE
1 1
2 3
1 1
1 2
2 3
2 1
1 3
我想要的是这个:
SEX RACE POPULATION
1 1 2
2 3 2
1 1 2
1 2 1
2 1 1
2 3 2
1 3 1
我可以手动打印和分配人口值,但我相信有一种更优雅的方法可以做到这一点。
答: 暂无答案
上一个:根据 R 中的唯一值合并/组合行
下一个:如何同时订购两列
评论
summarise
mutate
summarize
将数据压缩为每组一行。 将列添加到现有数据中。mutate
add_count
add_count(age_data, RACE, SEX, name = "count")