在 R 中转换多个值

man*_*u p 3 r shiny

有没有办法在 R 中转换多个值

asd <- data.frame(week = c(1,1,2,2), year = c("2019","2020","2019","2020"), val = c(1,2,3,4), cap = c(3,4,6,7))
Run Code Online (Sandbox Code Playgroud)

预期产出

week 2019_val 2020_val 2019_cap 2020_cap
1        1       2        3        6 
2        3       4        4        7
Run Code Online (Sandbox Code Playgroud)

All*_*ron 6

如果你想在基础 R 中执行此操作,你可以使用reshape

reshape(asd, direction = "wide", idvar = "week", timevar = "year", sep = "_")
#>   week val_2019 cap_2019 val_2020 cap_2020
#> 1    1        1        3        2        4
#> 3    2        3        6        4        7
Run Code Online (Sandbox Code Playgroud)

请注意,新列名称最好不要以年份开头,因为以数字开头的变量名称在 R 中不合法,因此始终需要用引号引起来。写起来会变得非常烦人asd$'2020_val',并且asd$val_2020当人们忘记引用时常常会导致错误。