R 数据帧重塑。列 headers 需要成为值... dcast 无济于事
R dataframe reshaping. Column headers need to become values... dcast no avail
我是 R 的新手,我正在尝试转换形状为
的数据框
actor <- c("a1", "a2", "a3")
code1 <- c("c1","c2", "c3")
measure_1 <- c(1, 2, 3)
measure_2 <- c(4, 5, 6)
x <- data.frame( actor, player ,measure_1, measure_2, measure_3 )
actor code1 measure_1 measure_2
1 a1 c1 1 4
2 a2 c2 2 5
3 a3 c3 3 6
into
actor code1 meausures value
1 a1 c1 measure_1 1
2 a1 c1 measure_2 4
3 a2 c2 measure_1 2
4 a2 c2 measure_2 5
5 a3 c3 measure_1 3
6 a3 c3 measure_2 6
我试过了,dcast 没用。
我不是要聚合并使用另一个函数来查找均值等。
这只是矩阵的重新排序。但是列 headers(measure_1 和 measure2)
实际上成为第二种形式的值,并分配了新列 headers。
提前感谢您的帮助。
library(reshape2)
actor <- c("a1", "a2", "a3")
code1 <- c("c1","c2", "c3")
measure_1 <- c(1, 2, 3)
measure_2 <- c(4, 5, 6)
x <- data.frame( actor, code1 ,measure_1, measure_2)
melt(x, id.vars = c("actor", "code1"),
variable.name = "measures",
value.name = "value")
此解决方案使用最新版本的 tidyr,因此您可能需要先更新包,然后再查看该解决方案是否适合您。
如果您熟悉 tidyr,请查看此小插图
https://tidyr.tidyverse.org/articles/pivot.html
它是关于重塑数据的 reshape2 的 tidyverse 版本。
library(tidyr)
library(tibble)
actor <- c("a1", "a2", "a3")
code1 <- c("c1","c2", "c3")
measure_1 <- c(1, 2, 3)
measure_2 <- c(4, 5, 6)
x <- tibble( actor, code1 ,measure_1, measure_2)
x %>%
pivot_longer(cols = starts_with('measure'),
names_to = 'measure',
values_to = 'value')
# A tibble: 6 x 4
actor code1 measure value
<chr> <chr> <chr> <dbl>
1 a1 c1 measure_1 1
2 a1 c1 measure_2 4
3 a2 c2 measure_1 2
4 a2 c2 measure_2 5
5 a3 c3 measure_1 3
6 a3 c3 measure_2 6
我是 R 的新手,我正在尝试转换形状为
的数据框 actor <- c("a1", "a2", "a3")
code1 <- c("c1","c2", "c3")
measure_1 <- c(1, 2, 3)
measure_2 <- c(4, 5, 6)
x <- data.frame( actor, player ,measure_1, measure_2, measure_3 )
actor code1 measure_1 measure_2
1 a1 c1 1 4
2 a2 c2 2 5
3 a3 c3 3 6
into
actor code1 meausures value
1 a1 c1 measure_1 1
2 a1 c1 measure_2 4
3 a2 c2 measure_1 2
4 a2 c2 measure_2 5
5 a3 c3 measure_1 3
6 a3 c3 measure_2 6
我试过了,dcast 没用。 我不是要聚合并使用另一个函数来查找均值等。 这只是矩阵的重新排序。但是列 headers(measure_1 和 measure2) 实际上成为第二种形式的值,并分配了新列 headers。
提前感谢您的帮助。
library(reshape2)
actor <- c("a1", "a2", "a3")
code1 <- c("c1","c2", "c3")
measure_1 <- c(1, 2, 3)
measure_2 <- c(4, 5, 6)
x <- data.frame( actor, code1 ,measure_1, measure_2)
melt(x, id.vars = c("actor", "code1"),
variable.name = "measures",
value.name = "value")
此解决方案使用最新版本的 tidyr,因此您可能需要先更新包,然后再查看该解决方案是否适合您。
如果您熟悉 tidyr,请查看此小插图 https://tidyr.tidyverse.org/articles/pivot.html
它是关于重塑数据的 reshape2 的 tidyverse 版本。
library(tidyr)
library(tibble)
actor <- c("a1", "a2", "a3")
code1 <- c("c1","c2", "c3")
measure_1 <- c(1, 2, 3)
measure_2 <- c(4, 5, 6)
x <- tibble( actor, code1 ,measure_1, measure_2)
x %>%
pivot_longer(cols = starts_with('measure'),
names_to = 'measure',
values_to = 'value')
# A tibble: 6 x 4
actor code1 measure value
<chr> <chr> <chr> <dbl>
1 a1 c1 measure_1 1
2 a1 c1 measure_2 4
3 a2 c2 measure_1 2
4 a2 c2 measure_2 5
5 a3 c3 measure_1 3
6 a3 c3 measure_2 6