R 改变数据帧的结构
这是当前的数据帧结构R 改变数据帧的结构,r,dataframe,transform,R,Dataframe,Transform,这是当前的数据帧结构 value. blue red 1 -1.22049503 -0.62733486 2 1.61641224 0.43102051 3 0.09079087 0.61619844 4 0.32325956 -0.17718356 想把它改成 value.
value. blue red
1 -1.22049503 -0.62733486
2 1.61641224 0.43102051
3 0.09079087 0.61619844
4 0.32325956 -0.17718356
想把它改成
value. number color
1 -1.22049503 blue
1 -0.62733486 red
2 1.61641224 blue
2 0.43102051 red
3 0.09079087 blue
3 0.61619844 red
4 0.32325956 blue
4 -0.17718356 red
我看到了这个问题,它的作用是相反的
tidyr::gather
就可以了。假设数据帧命名为df1
:
library(tidyr)
df1 %>%
gather(color, number, -value.)
如果希望结果按值排序。
如示例所示,请添加dplyr::arrange
:
library(tidyr)
library(dplyr)
df1 %>%
gather(color, number, -value.) %>%
arrange(value.)
@d、 b的评论和@neilfws的回答都很好。还有一种方法:
library(dplyr)
df <- data.frame(
value = c(1, 2, 3),
blue = c(10, 30, 50),
red = c(20, 40, 60)
)
df2 <- data.frame(
value = rep(1:nrow(df), each = 2),
color = rep(c("blue", "red"), nrow(df))
) %>%
mutate(number = if_else(color == "blue", df$blue[value], df$red[value]))
库(dplyr)
dfreforme2::melt(data=df1,id.vars=c(“value”)),variable.name=“color”,value.name=“number”)
@d.b谢谢,如果还有其他列,这会起作用吗?@johnsmith0您可以用我们的数据帧头(10)进行测试这会从头创建一个数据帧,我完全同意,但会保留它,因为它提供了一些直觉。