【发布时间】:2022-01-23 04:46:01
【问题描述】:
我想像这样转换数据框:
mre <- tibble::tribble(
~folder3, ~folder2, ~folder1,
"V3=4", "V2=1", "V1=0",
"V3=5", "V2=1", "V1=0",
"V3=4", "V2=2", "V1=0",
"V3=5", "V2=2", "V1=0",
"V3=4", "V2=1", "V1=1",
"V3=5", "V2=1", "V1=1",
"V3=4", "V2=2", "V1=1",
"V3=5", "V2=2", "V1=1"
)
到这里:
folder3 folder2 folder1 V3 V2 V1
V3=4 V2=1 V1=0 4 1 0
V3=5 V2=1 V1=0 5 1 0
V3=4 V2=2 V1=0 4 2 0
V3=5 V2=2 V1=0 5 2 0
V3=4 V2=1 V1=1 4 1 1
V3=5 V2=1 V1=1 5 1 1
V3=4 V2=2 V1=1 4 2 1
V3=5 V2=2 V1=1 5 2 1
基本上为每个提取唯一变量名称(此处为“V3、“V2”、“V1”,但可以是任何有效名称,例如“a”、“b”、c”) folder? 列作为新列名,并将值保留在原位。
通过使用第一行值,我为单个“文件夹”列提供以下内容:
mre %>%
tidyr::extract(folder1, into = .$folder1[1] |> word(1, sep="="), "\\S+=(\\d+)", remove = FALSE)
但我不知道如何扩展到多个“文件夹”列(数量不固定)。我尝试在答案here 之后使用map,但无法弄清楚如何从第一行获取变量名。
有什么建议吗?
【问题讨论】:
-
对不起,变量名“V3”在我的示例中与“folder3”重合。它可以是任意名称,因此需要从列值本身中提取。