I'm trying to convert all row in the first column into variables. Which I can call them later by using $ notation (e.g. data$SWEAT_index
). At this point the variable names were long, I will simplified it later by adding additional column. Maybe my approach are to straightforward. How to deal with this tibble?
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"))
As @NelsonGon mentioned we can use spread
new_df <- tidyr::spread(indices, Station, Value)
Now you can call individual values like new_df$`Station number
, new_df$`Station identifier
and so on.
In base R, you could transpose, convert it to dataframe and then assign column names using setNames
new_df <- setNames(data.frame(t(indices$Value)), indices$Station)
However, as @Konrad Rudolph mentions transposing the dataframe can mess up the data types of objects so handle it with care.