我尝试 reshape 以下内容
至以下内容
其实还有五个变量也是同样的方式。
我使用以下代码:
long <- data %>% pivot_longer(cols = c(-country, -region), names_to = c(".value", "year"), names_pattern = "([^\\.]*)\\.*(\\d{4})")
结果是数据的长版本,只是我丢失了国家和地区变量。我做错了什么?或者我还能怎样做得更好?
提前谢谢您。
最佳答案
我们可以更改正则表达式模式以匹配一个或多个非数字 (\\D+
) 作为第一个捕获组和一个或多个数字 (\\d+
) )作为第二个
librarytidyr)
pivot_longer(data, cols = c(-country, -region),
names_to = c(".value", "year"), names_pattern = "(\\D+)(\\d+)")
-输出
# A tibble: 2 × 5
country region year abc xyz
<chr> <chr> <chr> <int> <dbl>
1 Japan East Asia 2001 1 4.5
2 Japan East Asia 2002 2 5.5
数据
data <- structure(list(country = "Japan", region = "East Asia", abc2001 = 1L,
abc2002 = 2L, xyz2001 = 4.5, xyz2002 = 5.5),
class = "data.frame", row.names = c(NA,
-1L))
关于r - 当使用带有多个变量的pivot_longer时,我丢失了常量变量(包括id),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71727005/