我需要转换此数据集,其中有列/日期和行/变量/名称:
变量 1 (%)、变量 2($):
姓名 | 日期1 | 日期2 | 日期 3 |
---|---|---|---|
姓名1 | 价值11% | 价值12% | 价值13% |
姓名2 | 价值21% | 价值22% | 价值23% |
姓名3 | 价值31% | 价值32% | 价值33% |
姓名1 | 价值11$ | 价值12$ | 价值13$ |
姓名2 | 价值21$ | 价值22$ | 价值23$ |
姓名3 | 价值31$ | 价值32$ | 价值33$ |
成为包含列/变量和行/日期/名称的数据集:
合并数据集:
姓名 | 日期 | 变量1 | 变量2 |
---|---|---|---|
姓名1 | 日期1 | 价值11$。 | 价值11%。 |
姓名1 | 日期2 | 价值12$。 | 价值12%。 |
姓名1 | 日期 3 | 价值13$。 | 价值13%。 |
姓名2 | 日期1 | 价值21$。 | 价值21%。 |
姓名2 | 日期2 | 价值22$。 | 价值22%。 |
姓名2 | 日期 3 | 价值23$。 | 价值23%。 |
姓名3 | 日期1 | 价值31$。 | 价值31%。 |
姓名3 | 日期2 | 价值32$。 | 价值32%。 |
姓名3 | 日期 3 | 价值33$。 | 价值33%。 |
现在,我尝试使用第一个数据集和函数melt,名称为id:
融化(数据,id =“名称”)
不幸的是,我收到以下错误消息: match.names(clabs, names(xi)) 中的错误: 名字与以前的名字不匹配
可能是哪个错误?还有其他选择可以实现我的目标吗?
或者,我尝试从两个不同数据集中的两个变量导入数据,并使用 rbind 来整合它们,并通过 indetical 函数检查列名是否相同并且结果是否为 TRUE。我不知道这可能是导致此错误的原因。
非常感谢大家的帮助!
数据:
data <- data.frame(
stringsAsFactors = FALSE,
Name = c("Name1", "Name2", "Name3", "Name1", "Name2", "Name3"),
Date.1 = c("Value11%","Value21%",
"Value31%","Value11$","Value21$","Value31$"),
Date.2 = c("Value12%","Value22%",
"Value32%","Value12$","Value22$","Value32$"),
Date.3 = c("Value13%","Value23%",
"Value33%","Value13$","Value23$","Value33$")
)
而不是使用
melt()
包中的 cast()
和 reshape2
,而是
推荐使用 pivot_wider()
中的 pivot_longer()
和 tidyr
用于在宽数据格式和长数据格式之间旋转/重塑的包。
您的数据可能如下所示:
library(tidyverse)
data |>
pivot_longer(-Name,
names_to = "Date",
values_to = "Variable1")
#> # A tibble: 18 × 3
#> Name Date Variable1
#> <chr> <chr> <chr>
#> 1 Name1 Date.1 Value11%
#> 2 Name1 Date.2 Value12%
#> 3 Name1 Date.3 Value13%
#> 4 Name2 Date.1 Value21%
#> 5 Name2 Date.2 Value22%
#> 6 Name2 Date.3 Value23%
#> 7 Name3 Date.1 Value31%
#> 8 Name3 Date.2 Value32%
#> 9 Name3 Date.3 Value33%
#> 10 Name1 Date.1 Value11$
#> 11 Name1 Date.2 Value12$
#> 12 Name1 Date.3 Value13$
#> 13 Name2 Date.1 Value21$
#> 14 Name2 Date.2 Value22$
#> 15 Name2 Date.3 Value23$
#> 16 Name3 Date.1 Value31$
#> 17 Name3 Date.2 Value32$
#> 18 Name3 Date.3 Value33$