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)