R 根据相应的行标签将行值放置到列中
我在一个数据框中有两列,一列是“直径”,另一列是“灰烬”。我正试图根据ash列中的标签将两列转换为几列。这应该很简单,但我已经很久没有使用R了R 根据相应的行标签将行值放置到列中,r,R,我在一个数据框中有两列,一列是“直径”,另一列是“灰烬”。我正试图根据ash列中的标签将两列转换为几列。这应该很简单,但我已经很久没有使用R了 X Diameter Ash 1 0.566176 Apache 2 0.588312 Apache 3 0.590499 Tolk 4 0.607365 Belle Isle 5 0.631185 Tolk 我希望它看起来像: X Apache Belle Isle Tolk 1 0.566 0.607 0.590 2 0.588
X Diameter Ash
1 0.566176 Apache
2 0.588312 Apache
3 0.590499 Tolk
4 0.607365 Belle Isle
5 0.631185 Tolk
我希望它看起来像:
X Apache Belle Isle Tolk
1 0.566 0.607 0.590
2 0.588 N/A 0.631
您可以先将数据帧更改为矩阵,然后使用转置函数,但这可能不是您想要的,因为这样每个条目都会强制为字符串值。由于您的数据帧非常小,我建议您采用以下最简单的方式:
rbind(df$Ash, df$Diameter)
其中df是数据帧的名称您可以先将数据帧更改为矩阵,然后使用转置函数,但这可能不是您想要的,因为这样每个条目都会强制为字符串值。由于您的数据帧非常小,我建议您采用以下最简单的方式:
rbind(df$Ash, df$Diameter)
其中df是数据帧的名称我的解决方案按Ash对数据进行分组,使用row_number()创建一个新变量,然后传播数据
library(tidyverse)
x <- tibble(X= c(1:5),
Diameter = c(0.56,0.58,0.59,0.60,0.63),
Ash = c("Apache", "Apache", "Tolk", "Belle Isle","Tolk"))
df_2 <- x %>%select(-X) %>%
arrange(Ash) %>%
group_by(Ash) %>%
mutate(row = row_number()) %>%
spread(Ash, Diameter)
df_2
库(tidyverse)
x%
排列(灰分)%>%
组别按(灰分)%>%
变异(行=行编号())%>%
摊铺(灰分、直径)
df_2
我的解决方案按Ash对数据进行分组,使用row_number()创建一个新变量,然后传播数据
library(tidyverse)
x <- tibble(X= c(1:5),
Diameter = c(0.56,0.58,0.59,0.60,0.63),
Ash = c("Apache", "Apache", "Tolk", "Belle Isle","Tolk"))
df_2 <- x %>%select(-X) %>%
arrange(Ash) %>%
group_by(Ash) %>%
mutate(row = row_number()) %>%
spread(Ash, Diameter)
df_2
库(tidyverse)
x%
排列(灰分)%>%
组别按(灰分)%>%
变异(行=行编号())%>%
摊铺(灰分、直径)
df_2
我们可以使用扩展
功能
data2 <- data %>%
spread(key=Ash, value=Diameter)
输出:
X Apache Belle.Isle Tolk
1 1 0.566176 0.607365 0.590499
2 2 0.588312 NA 0.631185
我们可以使用
spread
函数
data2 <- data %>%
spread(key=Ash, value=Diameter)
输出:
X Apache Belle.Isle Tolk
1 1 0.566176 0.607365 0.590499
2 2 0.588312 NA 0.631185
将
plyr
ldply
与split
df=plyr::ldply(split(x$Diameter,x$Ash), rbind)
row.names(df)=df$.id
df$.id=NULL
df=data.frame(t(df))
df
Apache Belle.Isle Tolk
1 0.56 0.6 0.59
2 0.58 NA 0.63
将
plyr
ldply
与split
df=plyr::ldply(split(x$Diameter,x$Ash), rbind)
row.names(df)=df$.id
df$.id=NULL
df=data.frame(t(df))
df
Apache Belle.Isle Tolk
1 0.56 0.6 0.59
2 0.58 NA 0.63
令人惊叹的!谢谢你的回复,太棒了!感谢您的回复。另外,实际数据列的长度为50000行,这就是我没有手动执行此操作的原因。另外,实际数据列的长度为50000行,这也是我没有手动执行此操作的原因。