2015-05-06 2 views
4

У меня есть большой кадр данных, обозначающий появление триграмм в строке, где строки являются строками, триграммы - это столбцы, а значения указывают, происходит ли триграмма в строка.Как выбрать столбцы по значениям в строке в R

так что-то вроде этого:

strs <- c('this', 'that', 'chat', 'chin') 
thi <- c(1, 0, 0, 0) 
tha <- c(0, 1, 0, 0) 
hin <- c(0, 0, 0, 1) 
hat <- c(0, 1, 1, 0) 
df <- data.frame(strs, thi, tha, hin, hat) 
df 

# strs thi tha hin hat 
#1 this 1 0 0 0 
#2 that 0 1 0 1 
#3 chat 0 0 0 1 
#4 chin 0 0 1 0 

Я хочу, чтобы все столбцы/триграмм, которые имеют 1 для данной строки или заданной строки.

Так что для строки 2, строка «что», то результат был бы кадр данных, который выглядит следующим образом:

str tha hat 
1 this 0 0 
2 that 1 1 
3 chat 0 1 
4 chin 0 0 

Как я мог это сделать?

ответ

4

Это даст вам желаемый выход df.

givenStr <- "that" 
row <- df[df$strs==givenStr,] 
df[,c(1,1+which(row[,-1]==1))] 
1

В один лайнер:

df[as.logical(df[df$strs=='that',])] 

# strs tha hat 
#1 this 0 0 
#2 that 1 1 
#3 chat 0 1 
#4 chin 0 0 

 Смежные вопросы

  • Нет связанных вопросов^_^