2016-09-07 3 views
0

Я следующий кадр данных:

ID A1 A2 A3 A4  B1  B2  B3  B4 
1 ID1 1 2 1  1  1  1  2  2 
2 ID2 2 2 1  1  2  NA  2  1 
3 ID3 2 2 1  2  1  1  NA  2   
4 ID4 1 1 1  1  1  NA  NA  2   
5 ID5 2 2 1  1  NA  NA  2  NA  
6 ID6 1 1 1  1  2  2  2  2 

Я хочу, чтобы извлечь строки из собрания кадра данных конкретных условий для каждой комбинации А и В. Эти условия:

  • ПП: значение 2 присутствует в А-типа столбца + значение 2 присутствует в в-типа колонке

  • PA: значение 2 присутствует в А-типа столбца + значение 1, присутствующего в столбце в-типа

  • АП: значение 1 присутствует в А-типа столбца + значение 2 присутствует в колонке В-типа

  • АА: Значение 1 присутствует в А-типа столбца + значение 1 присутствует в колонке В-типа

Это то, что я писал:

A <- colnames(dataframe)[2:5] 
# A = A1, A2, A3 and A4 
B <- colnames(dataframe)[6:9] 
# B = B1, B2, B3 and B4 

for (a in A) { 
    for (b in B) { 
     PP <- dataframe[dataframe$a=='2' & dataframe$b=='2' , ] 
     PA <- dataframe[dataframe$a=='2' & dataframe$b=='1' , ] 
     AP <- dataframe[dataframe$a=='1' & dataframe$b=='2' , ] 
     AA <- dataframe[dataframe$a=='1' & dataframe$b=='1' , ] 
     print(head(PP)) #to have a preview 
    } 
} 

Однако новые кадры данных пусты, и я не понимаю, почему. В идеале первый цикл (с = А1 и В = В1) будет, следовательно, выход:

ПП:

 ID A1 A2 A3 A4 B1 B2 B3 B4 
2 ID2 2 2 1 1 2 NA 2 1 

ПА:

ID A1 A2 A3 A4 B1 B2 B3 B4 
3 ID3 2 2 1 2 1 1 NA 2 

АП:

ID A1 A2 A3 A4 B1 B2 B3 B4 
6 ID6 1 1 1 1 2 2 2 2 

AA:

ID A1 A2 A3 A4 B1 B2 B3 B4 
1 ID1 1 2 1 1 1 1 2 2 

Я надеюсь, что кто-то может помочь. Спасибо.

ответ

1

Добыча знака доллара создает проблему. Он не предназначен для передачи переменных, как в dataframe$a. Потому что a не является фактическим именем. Вы пытаетесь передать имя переменной на него. Но этот оператор будет искать литерал a и не найдет его. Попробуйте dataframe[,a]

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

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