dplyr над подмножеством данных - PullRequest
0 голосов
/ 31 мая 2018

Предполагая следующий фрейм данных

foo = c(1, 2, 3) 
bar = c("AA", "AB", "AC")
other = c("Z","N","Z")
df = data.frame(foo,bar,other,stringsAsFactors=FALSE)

У меня есть преобразование dplyr, работающее на нескольких строках, и для одной из них я хотел бы использовать только подмножество данных.

Другими словами,начиная с

 df%>%
      mutate(other=replace(other, foo > 1, "New"))

можно ли преобразовать следующий код в dplyr

df[df$foo<3,]$bar<-sub("A", "B", df[df$foo<3,]$bar)

во что-то подобное

mutate(df$foo<3=sub("A", "B", df$foo<3, perl = TRUE))

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Я знаю, что этот вопрос касается dplyr, но, к вашему сведению, синтаксис data.table аналогичен вашей попытке использовать mutate

library(data.table)
setDT(df)

df[foo > 1, other := 'New']
df[foo < 3, bar := sub('A', 'B', bar)]
df

#    foo bar other
# 1:   1  BA     Z
# 2:   2  BB   New
# 3:   3  AC   New

#With pipes
df %>% 
  .[foo > 1, other := 'New'] %>% 
  .[foo < 3, bar := sub('A', 'B', bar)]
0 голосов
/ 31 мая 2018

Вот решение по делу:

library(tidyverse)
df  %>%
  mutate(other=replace(other, foo > 1, "New"),
         bar= ifelse(foo<3,sub("A", "B", bar),bar))

#   foo bar other
# 1   1  BA     Z
# 2   2  BB   New
# 3   3  AC   New
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...