所有变量都不是从数据管道读取的 - dplyr

时间:2017-11-07 01:27:04

标签: r dplyr

我有一个包含8个变量的数据集,当我使用下面的语法运行dplyr时,我的输出数据帧只包含我在dplyr代码中使用的变量,而我想要所有变量

ShowID<-MyData %>%
  group_by(id) %>%
  summarize (count=n()) %>%
  filter(count==min(count))
ShowID

所以我的输出会有两个变量--ID和Count。如何在新数据框中获取其余变量?为什么会发生这种情况,我在这里无能为力?

> ncol(ShowID)
[1] 2
> ncol(MyData)
[1] 8

MYDATA
key     ID  v1  v2  v3  v4  v5  v6
0-0-70cf97  1   89  20  30  45  55  65
3ad4893b8c  1   4   5   45  45  55  65
0-0-70cf97d7    2   848 20  52  66  56  56
0-0-70cf    2   54  4   846 65  5   5
0-0-793b8c  3   56454   28  6   4   5   65
0-0-70cf98  2   8   4654    30  65  6   21
3ad4893b8c  2   89  66  518 156 16  65
0-0-70cf97d8    3   89  20  161 1   55  45465
0-0-70cf    5   89  79  48  45  55  456
0-0-793b8c  5   89  20  48  545 654 4
0-0-70cf99  6   9   20  30  45  55  65


DESIRED
key     ID  count   v1  v2  v3  v4  v5  v6
0-0-70cf99  6   1   9   20  30  45  55  65


RESULT FROM CODE
ID  count
6   1

2 个答案:

答案 0 :(得分:2)

您可以使用基本R ave方法计算每个组中的行数(ID),然后选择具有最小行数的组。

num_rows <- ave(MyData$v1, MyData$ID, FUN = length)
MyData[which(num_rows == min(num_rows)), ]

#          key ID v1 v2 v3 v4 v5 v6
#11 0-0-70cf99  6  9 20 30 45 55 65

在这种情况下你也可以使用which.min来避免一个步骤,但是如果有多个最小值,它将失败,因此,我使用了which

答案 1 :(得分:1)

无需总结:

class Color(enum.IntEnum):
    RED: int = 1
    GREEN: int = 2
    BLUE: int = 3


def test_enum(color: Color) -> str:
    if color == Color.RED:
        return "red"
    elif color == Color.GREEN:
        return "green"
    elif color == Color.BLUE:
        return "blue"