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插图中阅读有关它的更多信息.
使用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)