【问题标题】:R Recode variable for all observations that do not occur more than onceR Recode变量用于所有不发生多次的观察
【发布时间】:2022-12-17 10:18:28
【问题描述】:

我有一个简单的数据框,如下所示:

Observation X1 X2 Group
1           2   4   1
2           6   3   2
3           8   4   2
4           1   3   3
5           2   8   4
6           7   5   5
7           2   4   5

我如何重新编码 group 变量,以便将所有非经常性观察重新编码为“独立”?

所需的输出如下:

Observation X1 X2 Group
1           2   4   Unaffiliated
2           6   3   2
3           8   4   2
4           1   3   Unaffiliated
5           2   8   Unaffiliated
6           7   5   5
7           2   4   5

【问题讨论】:

    标签: r recode


    【解决方案1】:

    我们可能会做

    df1$Group[with(df1, !(duplicated(Group)|duplicated(Group, fromLast = TRUE))] <- "Unaffiliated"
    

    【讨论】:

      【解决方案2】:

      unfaffil 获取一组编号的向量,如果每个元素有多个元素,则用 Unaffiliated 替换每个元素,否则返回它。然后我们可以使用 ave 按组应用它。没有使用包。如果您使用dplyr,您可以将transform替换为mutate,它仍然有效。

      unaffil <- function(x) if (length(x) == 1) "Unaffiliated" else x
      transform(dat, Group = ave(Group, Group, FUN = unaffil))
      

      给予

        Observation X1 X2        Group
      1           1  2  4 Unaffiliated
      2           2  6  3            2
      3           3  8  4            2
      4           4  1  3 Unaffiliated
      5           5  2  8 Unaffiliated
      6           6  7  5            5
      7           7  2  4            5
      

      笔记

      dat <- structure(list(Observation = 1:7, X1 = c(2L, 6L, 8L, 1L, 2L, 
      7L, 2L), X2 = c(4L, 3L, 4L, 3L, 8L, 5L, 4L), Group = c(1L, 2L, 
      2L, 3L, 4L, 5L, 5L)), class = "data.frame", row.names = c(NA, 
      -7L))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-07
        • 1970-01-01
        相关资源
        最近更新 更多