【发布时间】:2023-01-18 21:19:26
【问题描述】:
我如何在 R 中使用 dplyr 在 ID 列以外的列中识别每列末尾指定的年份(跟随各种字符),然后将相应的行放在新的数据框中,并将该年份表示为新列,最后有一个新列,它只是从原始列名中删除了年份?
例如,我想将 2 条记录的数据框转换为 col1、col2_1980、col2_1981、col3_1980 和 col3_1981 的 5 列,其中 col1 是一个字符值(“a”或“b”)到一个数据框4 条记录,其中 col1 =“a”表示 2 条记录,col1 =“b”表示 2 条记录,然后 col2 =“1980”表示每个 col1 值的 1 条记录,col2 =“1981”表示每个 col1 值的 1 条记录。
如果我可以使用捕获年份的公式,那么使用 dplyr::separate() 可能会起作用:
substr(colnames(df1),
nchar(colnames(df1)) - 3,
nchar(colnames(df1)))
原版的
set.seed(3)
df1 <-
rbind(
data.frame(
col1 = "a",
col2_1980 = runif(1),
col2_1981 = runif(1),
col3_1980 = runif(1),
col3_1981 = runif(1)),
data.frame(
col1 = "b",
col2_1980 = runif(1),
col2_1981 = runif(1),
col3_1980 = runif(1),
col3_1981 = runif(1)))
col1 col2_1980 col2_1981 col3_1980 col3_1981
1 a 0.1680415 0.8075164 0.3849424 0.3277343
2 b 0.6021007 0.6043941 0.1246334 0.2946009
目标
【问题讨论】: