Конвертировать каждую строку в заголовке столбца - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь преобразовать все строки в первом столбце в переменные.Который я могу назвать позже, используя $ нотацию (например, data$SWEAT_index).На этом этапе имена переменных были длинными, я упросту их позже, добавив дополнительный столбец.Может быть, мой подход к прямой.Как бороться с этим тиблом?

indices
# A tibble: 30 x 2
   Station                                 Value      
   <chr>                                   <chr>      
 1 Station identifier                      WMKC       
 2 Station number                          48615      
 3 Observation time                        190120/1200
 4 Station latitude                        6.16       
 5 Station longitude                       102.28     
 6 Station elevation                       5.0        
 7 Showalter index                         1.26       
 8 Lifted index                            -2.86      
 9 LIFT computed using virtual temperature -3.38      
10 SWEAT index                             187.99     
# ... with 20 more rows


data <- indices[-1,]
colnames(data) <-data[,1]
data
# A tibble: 29 x 2
   `c("Station number", "Observation time", "Station latitude", "Statio~ `c(48615, NA, 6.16, 102.28~
   <chr>                                                                                       <dbl>
 1 Station number                                                                           48615   
 2 Observation time                                                                            NA   
 3 Station latitude                                                                             6.16
 4 Station longitude                                                                          102.  
 5 Station elevation                                                                            5   
 6 Showalter index                                                                              1.26
 7 Lifted index                                                                                -2.86
 8 LIFT computed using virtual temperature                                                     -3.38
 9 SWEAT index                                                                                188.  
10 K index                                                                                     14.4 
# ... with 19 more rows

dput(indices)
structure(list(Station = c("Station identifier", "Station number", 
"Observation time", "Station latitude", "Station longitude", 
"Station elevation", "Showalter index", "Lifted index", "LIFT computed using virtual temperature", 
"SWEAT index", "K index", "Cross totals index", "Vertical totals index", 
"Totals totals index", "Convective Available Potential Energy", 
"CAPE using virtual temperature", "Convective Inhibition", "CINS using virtual temperature", 
"Equilibrum Level", "Equilibrum Level using virtual temperature", 
"Level of Free Convection", "LFCT using virtual temperature", 
"Bulk Richardson Number", "Bulk Richardson Number using CAPV", 
"Temp [K] of the Lifted Condensation Level", "Pres [hPa] of the Lifted Condensation Level", 
"Mean mixed layer potential temperature", "Mean mixed layer mixing ratio", 
"1000 hPa to 500 hPa thickness", "Precipitable water [mm] for entire sounding"
), Value = c(NA, 48615, NA, 6.16, 102.28, 5, 1.26, -2.86, -3.38, 
187.99, 14.4, 19, 23.9, 42.9, 409.13, 595.76, -26.9, -8.6, 228.72, 
226.79, 819.49, 871.25, 240, 349.48, 294.55, 938.33, 299.97, 
17.45, 5782, 46.56)), row.names = c(NA, -30L), class = c("tbl_df", 
"tbl", "data.frame"))

1 Ответ

0 голосов
/ 31 января 2019

Как упомянул @NelsonGon, мы можем использовать spread

new_df <- tidyr::spread(indices, Station, Value)

Теперь вы можете вызывать отдельные значения, такие как new_df$`Station number, new_df$`Station identifier и так далее.


В базе R вы можете транспонировать, преобразовывать ее в фрейм данных и затем назначать имена столбцов, используя setNames

new_df <- setNames(data.frame(t(indices$Value)), indices$Station)

Однако, как упоминает @Konrad Rudolph, транспонирование фрейма данных можетиспортить типы данных объектов, поэтому обращайтесь с ними осторожно.

...