Суммируйте несколько столбцов и выберите значения одного столбца по имени в R - PullRequest
0 голосов
/ 15 апреля 2020

Учитывая данные кадра df следующим образом, я хочу суммировать столбцы SAT.verbal, SAT.math и SAT.prct как SAT.total, а затем отфильтровать его:

           EduExp  PTR Salary SAT.verbal SAT.math SAT.prct
Alabama     4.405 17.2 31.144        491      538        8
Alaska      8.963 17.6 47.951        445      489       47
Arizona     4.778 19.3 32.175        448      496       27
Arkansas    4.459 17.1 28.934        482      523        6
California  4.992 24.0 41.078        417      485       45
Colorado    5.443 18.4 34.571        462      518       29

Я использовал df[, (colnames(df) == "SAT.total")], но это дает мне следующий результат:

Alabama       
Alaska        
Arizona       
Arkansas      
California    
Colorado      
Connecticut   
Delaware      
Florida       
Georgia       
Hawaii        
Idaho         
Illinois      
Indiana       
Iowa          
Kansas        
Kentucky      
Louisiana
...

Я также пытался с df$SAT.total, возникает ошибка: Error in df$SAT.total : $ operator is invalid for atomic vectors.

Я новичок в R Кто-нибудь может помочь в этом вопросе? Спасибо.

ОБНОВЛЕНИЕ:

str(df)

Out:

 num [1:50, 1:6] 4.41 8.96 4.78 4.46 4.99 ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:50] "Alabama" "Alaska" "Arizona" "Arkansas" ...
  ..$ : chr [1:6] "EduExp" "PTR" "Salary" "SAT.verbal" ...

summary(df)

Out:

     EduExp           PTR            Salary        SAT.verbal       SAT.math        SAT.prct    
 Min.   :3.656   Min.   :13.80   Min.   :25.99   Min.   :401.0   Min.   :443.0   Min.   : 4.00  
 1st Qu.:4.882   1st Qu.:15.22   1st Qu.:30.98   1st Qu.:427.2   1st Qu.:474.8   1st Qu.: 9.00  
 Median :5.768   Median :16.60   Median :33.29   Median :448.0   Median :497.5   Median :28.00  
 Mean   :5.905   Mean   :16.86   Mean   :34.83   Mean   :457.1   Mean   :508.8   Mean   :35.24  
 3rd Qu.:6.434   3rd Qu.:17.57   3rd Qu.:38.55   3rd Qu.:490.2   3rd Qu.:539.5   3rd Qu.:63.00  
 Max.   :9.774   Max.   :24.30   Max.   :50.05   Max.   :516.0   Max.   :592.0   Max.   :81.00  

1 Ответ

0 голосов
/ 15 апреля 2020

Ваш df объект не является data.frame объектом. Сначала приведите его к одному, а затем вычислите SAT.Total с помощью:

df <- data.frame(df) 
df$SAT.total <- df$SAT.verbal + df$SAT.math + df$SAT.perc

Затем вы можете получить доступ к нему, как вы пытались, через df$SAT.Total или df[,colnames(df) = SAT.Total] или напрямую по df[,'SAT.Total']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...