R如何改变行的子集

mo_*_*aat 12 r subset dplyr data.table

我在改变行的子集时遇到了麻烦dplyr.我正在使用链接命令:%>%说:

data <- data %>%
  filter(ColA == "ABC") %>%
  mutate(ColB = "XXXX")
Run Code Online (Sandbox Code Playgroud)

这很好但问题是我希望能够选择整个原始表并看到mutate只应用于我指定的数据子集.我的问题是,当我在此之后查看数据时,我只看到其子集data及其更新ColB信息.

我也想知道如何使用它data.table.

谢谢.

Aru*_*run 11

使用data.table,我们做:

setDT(data)[colA == "ABC", ColB := "XXXX"]
Run Code Online (Sandbox Code Playgroud)

并且这些值是就地修改,不像if-else,它会复制整个列以替换条件满足的那些行.

我们将此子分配称为参考.您可以在新的HTML插图中阅读有关它的更多信息.


Kar*_*Woo 7

使用filter()时实际上是删除了与指定条件不匹配的行,因此它们不会显示在最终数据集中.

ColB您的数据框中是否已存在?如果是这样,

data %>%
  mutate(ColB = ifelse(ColA == "ABC", "XXXX", ColB))
Run Code Online (Sandbox Code Playgroud)

将更ColB改为"XXXX"何时,ColA == "ABC"并将其保留为原样.如果ColB尚不存在,那么您将必须指定对行执行的操作ColA != "ABC",例如:

data %>%
  mutate(ColB = ifelse(ColA == "ABC", "XXXX", NA))
Run Code Online (Sandbox Code Playgroud)