有没有办法在 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)
如果你想在基础 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当人们忘记引用时常常会导致错误。