gpt4 book ai didi

r - dcast 2 列

转载 作者:行者123 更新时间:2023-12-03 04:16:45 26 4
gpt4 key购买 nike

我有以下data.frame:

group <- sample(c("egyptian", "american", "irish", "australian"), 50, TRUE)
E <- c(rnorm(50, 5, 6))
F <- c(rnorm(50, 7.8, 4.5))
G <- c(rnorm(50, 65, 16.7))
test <- data.frame(group=group, E=E, F=F, G=G)

我的目标是生成一个 data.frame,其中包含 group 作为标题,并在下面的 E 中列出其相应的值。

像这样的data.frame:

egyptian <- c(rnorm(50,5,6))
american<- c(rnorm(50,5,6))
irish<- c(rnorm(50,5,6))
australian<- c(rnorm(50,5,6))
test <- data.frame(egyptian=egyptian, american=american,
irish=irish, australian=australian)

我尝试对 2 列进行子集化,然后使用 dcast,但失败了。是否可以将 2 列从长到宽进行dcast

最佳答案

正如@jbaums 在评论中提到的,每个组的大小并不相同。

  table(test$group)
# american australian egyptian irish
# 7 18 9 16

最好设置一个种子以使其可复制。即

  set.seed(1)
group <- sample(c("egyptian", "american", ....)

要将初始输入转换为预期输出(基于“E”列),我们可能需要根据分组变量(“group”)创建一个序列

library(reshape2) 
test$ind <- with(test, ave(seq_along(group), group, FUN=seq_along))
dcast(test, ind~group, value.var='E')

或者另一个base R选项是使用xtabs

xtabs(E~ind+group, test)

但是,请注意,这将为那些缺失值组合填充“0”。对于dcast,默认情况下,我们将得到缺失组合的“NA”,我们可以通过fill参数进行更改。

关于r - dcast 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com