Подмножество значений с двумя числами - PullRequest
3 голосов
/ 31 марта 2020

Я хочу подставить значения с двумя числами во фрейме данных, как мне их кодировать?

id <- factor(rep(letters[1:2], each=5))
    A <- c(1,2,NA,67,8,9,0,6,7,9)
    B <- c(5,6,31,9,8,1,NA,9,7,4)
    C <- c(2,3,5,NA,NA,2,7,6,4,6)
    D <- c(6,5,89,3,2,9,NA,12,69,8)
    df <- data.frame(id, A, B,C,D) 
    df

Это должно выглядеть как-то

67,31,89,69

Ответы [ 2 ]

4 голосов
/ 31 марта 2020

Использование для l oop:

id <- factor(rep(letters[1:2], each=5))
A <- c(1,2,NA,67,8,9,0,6,7,9)
B <- c(5,6,31,9,8,1,NA,9,7,4)
C <- c(2,3,5,NA,NA,2,7,6,4,6)
D <- c(6,5,89,3,2,9,NA,12,69,8)
df <- data.frame(id, A, B,C,D) 
df

out <- c()
for(i in 1:ncol(df)){
  for(j in 1:nrow(df)){
    if(!is.na(df[j, i]) & nchar(as.character(df[j, i])) == 2){
      out <- c(out, df[j, i]) 
    }
  }
}
out
# [1] 67 31 89 12 69
1 голос
/ 31 марта 2020
tmp=unlist(subset(df,select=-c(id)))
tmp[nchar(tmp)==2 & !is.na(tmp)]

A4 B3 D3 D8 D9 
67 31 89 12 69 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...