#r #dataframe
#r #фрейм данных
Вопрос:
У меня есть следующие данные,
R1 <- c("15515","5156",NA,NA, "2857")
RC <- c("ACC","ZXC","ACC","QWZ","ACC")
R2 <- c(515,5156.11-,415-,1455-,886)
df <- data.frame(R1,RC,R2, stringsAsFactors = F)
У меня есть условие, что R1 не должен содержать NA, а RC — это только ACC, который должен быть записан в df1
а оставшиеся данные — в другой фрейм данных df2.
Я пытался выполнить подмножество, но не смог получить желаемый результат.
Возможно ли создать такие два фрейма данных (df1 и df2) в одном экземпляре?
Ответ №1:
Вы можете объединить оба условия ( !is.na(df$R1)
, df$RC == "ACC"
) с amp;
и использовать результат один раз как подмножество df
, а другой раз как отрицательный с !
.
i <- !is.na(df$R1) amp; df$RC == "ACC"
df1 <- df[i,]
df2 <- df[!i,]
df1
# R1 RC R2
#1 15515 ACC 515
#5 2857 ACC 886
df2
# R1 RC R2
#2 5156 ZXC 5156.11-
#3 <NA> ACC 415-
#4 <NA> QWZ 1455-
В случае, если у вас есть NA
в df$RC
:
i <- is.na(df$R1) | (is.na(df$RC) | df$RC != "ACC")
df1 <- df[!i,]
df2 <- df[i,]
Комментарии:
1. Но это также создает ненужные строки NA
2. Таким образом, df2 также не должен иметь
NA
?3. Поскольку мои фактические данные огромны, я получаю случайные строки NA в обоих фреймах данных
4. Первый код абсолютно хорош, но вместе с ожидаемыми данными я получаю дополнительные строки, которые содержат только NA
5. О, тогда у вас также есть
NA
вRC
. Смотрите обновление для этого случая.