如何在R中转换数据帧?
我有一个R数据框,形式是如何在R中转换数据帧?,r,dataframe,R,Dataframe,我有一个R数据框,形式是 my.data1 = data.frame(sex = c("m", "f"), A = c(1, 2), B = c(3, 4)) my.data2 = data.frame(value = c(1, 2, 3, 4), group = c("A", "A", &
my.data1 = data.frame(sex = c("m", "f"),
A = c(1, 2),
B = c(3, 4))
my.data2 = data.frame(value = c(1, 2, 3, 4),
group = c("A", "A", "B", "B"),
sex = c("m", "f", "m", "f"))
但是,我希望我的数据以
my.data1 = data.frame(sex = c("m", "f"),
A = c(1, 2),
B = c(3, 4))
my.data2 = data.frame(value = c(1, 2, 3, 4),
group = c("A", "A", "B", "B"),
sex = c("m", "f", "m", "f"))
因此,基本上,我想将一些以前的列(“A”和“B”)转换为新列“group”下的表单元格,同时将所有以前的表单元格收集到一个新列“value”下
相应地转换数据的最简单方法是什么
提前谢谢 使用
restrape2
和melt()
函数可获得与您想要的接近的结果。您可以将变量定义为id,并对数据进行重塑:
library(reshape2)
#Data
my.data1 = data.frame(sex = c("m", "f"),
A = c(1, 2),
B = c(3, 4))
#Reshape
my.data2 <- melt(my.data1,id.vars = 'sex')
如果您想更进一步,可以使用tidyverse
方法和pivot\u longer()
。在此函数中,还必须使用cols
参数将引用列设置为id:
library(tidyverse)
my.data1 %>% pivot_longer(cols = -sex)
输出:
sex variable value
1 m A 1
2 f A 2
3 m B 3
4 f B 4
# A tibble: 4 x 3
sex name value
<fct> <chr> <dbl>
1 m A 1
2 m B 3
3 f A 2
4 f B 4
#一个tible:4 x 3
性别名称值
1米A 1
2MB3
3 f A 2
4 f B 4