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

RNB

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

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变量”指示)是否从未亲吻过任何“伙伴”。换句话说,如果该人与任何一个伴侣接吻,则新变量将显示“是”-他们从不与任何伴侣接吻。我认为这应该是这样的:

  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

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

曼努埃尔·R

这应该做

require(dplyr)

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")))

df_new <- df %>% 
   group_by(id) %>% 
   mutate("neverkiss" = {if (any(kiss == "Yes")) "No" else "Yes"})

df_new

如果新列应包含因素,则必须ungroup首先

df_new <- df %>% 
   group_by(id) %>% 
   mutate("neverkiss" = {if (any(kiss == "Yes")) "No" else "Yes"}) %>% 
   ungroup() %>% 
   mutate("neverkiss" = as.factor(neverkiss))

class(df_new$neverkiss)
[1] "factor"

原因是因素无法结合:

a <- as.factor(c("Yes", "Yes", "Yes"))
b <- as.factor(c("No", "No", "No")) 

c(a, b) # meaningless

由于分组仍在进行中,mutate因此基本上将向量neverkiss构建为每个id(组)向量的组合,这将导致向量仅为一个级别(在这种情况下为“否”)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

串联使用mutate和ifelse来基于因子变量创建新的数字变量

来自分类Dev

在group_by()%>%mutate()函数调用中使用带引号的变量

来自分类Dev

group_by变量和dplyr中的和

来自分类Dev

dplyr mutate:传递变量列表以创建多个新变量

来自分类Dev

Dplyr group_by和总结,但保留非数字变量

来自分类Dev

基于多个条件和字符串向量(或tidyselect)传递的相应变量名称,使用dplyr :: mutate创建新变量

来自分类Dev

使用`rle`函数和`dplyr``group_by`命令来映射分组变量

来自分类Dev

使用dplyr mutate函数根据当前行有条件地创建新变量

来自分类Dev

使用group_by(多个变量)时的dplyr问题

来自分类Dev

使用dplyr的过滤器和mutate生成一个新变量

来自分类Dev

使用dplyr mutate自动生成新的变量名

来自分类Dev

dplyr :: group_by使变量未分组

来自分类Dev

dplyr:从group_by变量中删除NA

来自分类Dev

如何使用mutate和ifelse将数值变量转换为多级因子变量

来自分类Dev

dplyr:在mutate命令中使用过滤器group_by

来自分类Dev

在R中使用For循环创建新变量

来自分类Dev

使用跨多个变量的逻辑条件上的mutate创建新变量-mutate?

来自分类Dev

使用跨多个变量的逻辑条件上的mutate创建新变量-mutate?

来自分类Dev

在R中,使用dplyr的mutate()创建一个以另一个内容为条件的新变量

来自分类Dev

dplyr:`group_by`和`mutate_each`错误

来自分类Dev

dplyr group_by和mutate,如何访问数据帧?

来自分类Dev

在函数中使用dplyr的问题(group_by)

来自分类Dev

当与group_modify结合使用时,管理dplyr group_by函数以保留分组变量

来自分类Dev

使用transform和%>%创建新变量

来自分类Dev

通过mutate case_when通过多个条件创建新变量

来自分类Dev

使用dplyr创建仅为数据子集定义的新变量

来自分类Dev

使用多个不同的group_by变量(dplyr)汇总数据框

来自分类Dev

使用dplyr创建具有几个分类/因子变量的汇总比例表

来自分类Dev

dplyr:在函数中将多个变量移交给group_by

Related 相关文章

  1. 1

    串联使用mutate和ifelse来基于因子变量创建新的数字变量

  2. 2

    在group_by()%>%mutate()函数调用中使用带引号的变量

  3. 3

    group_by变量和dplyr中的和

  4. 4

    dplyr mutate:传递变量列表以创建多个新变量

  5. 5

    Dplyr group_by和总结,但保留非数字变量

  6. 6

    基于多个条件和字符串向量(或tidyselect)传递的相应变量名称,使用dplyr :: mutate创建新变量

  7. 7

    使用`rle`函数和`dplyr``group_by`命令来映射分组变量

  8. 8

    使用dplyr mutate函数根据当前行有条件地创建新变量

  9. 9

    使用group_by(多个变量)时的dplyr问题

  10. 10

    使用dplyr的过滤器和mutate生成一个新变量

  11. 11

    使用dplyr mutate自动生成新的变量名

  12. 12

    dplyr :: group_by使变量未分组

  13. 13

    dplyr:从group_by变量中删除NA

  14. 14

    如何使用mutate和ifelse将数值变量转换为多级因子变量

  15. 15

    dplyr:在mutate命令中使用过滤器group_by

  16. 16

    在R中使用For循环创建新变量

  17. 17

    使用跨多个变量的逻辑条件上的mutate创建新变量-mutate?

  18. 18

    使用跨多个变量的逻辑条件上的mutate创建新变量-mutate?

  19. 19

    在R中,使用dplyr的mutate()创建一个以另一个内容为条件的新变量

  20. 20

    dplyr:`group_by`和`mutate_each`错误

  21. 21

    dplyr group_by和mutate,如何访问数据帧?

  22. 22

    在函数中使用dplyr的问题(group_by)

  23. 23

    当与group_modify结合使用时,管理dplyr group_by函数以保留分组变量

  24. 24

    使用transform和%>%创建新变量

  25. 25

    通过mutate case_when通过多个条件创建新变量

  26. 26

    使用dplyr创建仅为数据子集定义的新变量

  27. 27

    使用多个不同的group_by变量(dplyr)汇总数据框

  28. 28

    使用dplyr创建具有几个分类/因子变量的汇总比例表

  29. 29

    dplyr:在函数中将多个变量移交给group_by

热门标签

归档