gpt4 book ai didi

r - 在 dplyr 包中使用 group_by 和 mutate 通过 id 变量创建新的因子变量

转载 作者:行者123 更新时间:2023-12-04 10:56:50 24 4
gpt4 key购买 nike

我有一个长格式的分层数据框,其中每一行代表关系,其中许多可以属于一个人。这是一个小型示例数据集的代码:

df <- data.frame(id = as.factor(c(1,1,1,2,2,3,4,4)),
partner = c(1,2,3,1,2,1,1,2),
kiss = as.factor(c("Yes", "No", "No", "No", "No", "Yes", "Yes", "No")))

id partner kiss
1 1 1 Yes
2 1 2 No
3 1 3 No
4 2 1 No
5 2 2 No
6 3 1 Yes
7 4 1 Yes
8 4 2 No

我想在这个数据集中创建一个新的因子变量,指示这个人(由“id 变量”表示)是否从未亲吻过他们的任何“伴侣”。换句话说,如果这个人与他们的任何伴侣接吻,新变量将指示"is"——他们从未与任何伴侣接吻。这是我认为它应该看起来的样子:
  id partner kiss neverkiss
1 1 1 Yes No
2 1 2 No No
3 1 3 No No
4 2 1 No Yes
5 2 2 No Yes
6 3 1 Yes No
7 4 1 Yes No
8 4 2 No No

理想情况下,我想找到一种方法来创建这个变量而不 reshape 数据集。我也更喜欢使用 dplyr 包。到目前为止,我已经考虑过使用这个包中的 group_by 和 mutate 函数来创建这个变量。但是,我不确定我可以使用哪些辅助函数来创建我的特定变量。我对 dplyr 软件包之外的其他想法持开放态度,但这对我来说将是一等奖。

最佳答案

我们也可以使用 data.table

library(data.table)
setDT(df)[, neverkiss := if(any(kiss=="Yes")) "No" else "Yes" , id]

关于r - 在 dplyr 包中使用 group_by 和 mutate 通过 id 变量创建新的因子变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34131043/

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