gpt4 book ai didi

r - 如何根据R中的多个值找到确切的变化年份

转载 作者:行者123 更新时间:2023-12-04 08:32:35 25 4
gpt4 key购买 nike

我有一个包含多个主题(公司)、年份、个人姓名和性别(女性、男性)的数据框。我想获取个人姓名更改的年份(如果有更改)。此外,如果在特定年份发生变化,我想创建两个二元变量:“FemaletoMale”(和 MaletoFemale),表示从女性到男性(男性到女性)发生的变化。

所以,如果我有一张像 这样的 table

companyid year   personalname gender 
1 1990 Alison Female
1 1991 Alison Female
1 1992 Kate Female
1 1993 Kate Female
2 1990 George Male
2 1991 Kate Female
2 1992 Kate Female
3 1990 Michael Male
3 1991 Dwight Male
我知道这个问题可以帮助我计算更改的数量:
How to tell if a value changed over dimensions in R df<- df %>% group_by(companyid) %>% summarise(ChangeYear = sprintf("%s to %s", min(year), max(year)), change.count = length(unique(personalname)) - 1)这给了我变化的数量。我想看到的是;
companyid  change.count  changeyear  FemaletoMale MaletoFemale
1 1 1992 0 0
2 1 1991 0 1
3 1 1991 0 0

最佳答案

这是否有效:

library(dplyr)
df %>% group_by(companyid) %>%
summarise(change.count = n_distinct(personalname)-1,
changeyear = year[personalname != lag(personalname)][2],
FemaletoMale = case_when(gender[1] == 'Female' & gender[n()] == 'Male' ~ 1, TRUE ~ 0),
MaletoFemale = case_when(gender[1] == 'Male' & gender[n()] == 'Female' ~ 1, TRUE ~ 0))
`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 3 x 5
companyid change.count changeyear FemaletoMale MaletoFemale
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 1992 0 0
2 2 1 1991 0 1
3 3 1 1991 0 0

关于r - 如何根据R中的多个值找到确切的变化年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64951172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com