gpt4 book ai didi

r - pivot_wider 是否有替代的 r 基函数?

转载 作者:行者123 更新时间:2023-12-05 09:32:43 28 4
gpt4 key购买 nike

我有以下类型的表:

<表类="s-表"><头>经济特区类值<正文>1_1_1121_1_1521_1_2521_1_3111_1_3521_1_4111_1_5211_2_1121_2_152

为了在多个新列中传播“Class”列,从“Val”列中获取值,我使用了 pivot_wider,一切顺利。我输入了这段代码:

pivot_wider(names_from = Class, values_from = Val, names_sort=T, values_fill = list(n = 0))

得到这样的结果:

<表类="s-表"><头>经济特区<日>1 <日>2 <日>3 <日>4 <日>5 6<日>7 <正文>1_1_120002001_1_200002001_1_31000200

不幸的是,我不得不使用一台只有基本 R 包的外部计算机,而且请求额外包的时间并不短。

我尝试使用这个解决方案:

newdata <- xtabs(dat$Val ~ dat$Sez + dat$Class)

但它为我提供了每一行的频率分布:

<表类="s-表"><头>经济特区类频率<正文>1_1_1121_1_2101_1_3111_1_4111_1_5101_2_111

我正在寻找具有 R 基本功能的解决方案,它给我一个对象,该对象等于使用 pivot_wider 的对象。

最佳答案

我们将“类”创建为 factor 并使用 xtabs

df1$Class <- factor(df1$Class, levels = 1:7)

xtabs(Val ~ SEZ + Class, df1)

-输出

      Class
SEZ 1 2 3 4 5 6 7
1_1_1 2 0 0 0 2 0 0
1_1_2 0 0 0 0 2 0 0
1_1_3 1 0 0 0 2 0 0
1_1_4 1 0 0 0 0 0 0
1_1_5 0 1 0 0 0 0 0
1_2_1 2 0 0 0 2 0 0

如果我们需要一个data.frame输出

out <- as.data.frame.matrix( xtabs(Val ~ SEZ + Class, df1))
out$SEZ <- row.names(out)
row.names(out) <- NULL

数据

df1 <- structure(list(SEZ = c("1_1_1", "1_1_1", "1_1_2", "1_1_3", "1_1_3", 
"1_1_4", "1_1_5", "1_2_1", "1_2_1"), Class = c(1L, 5L, 5L, 1L,
5L, 1L, 2L, 1L, 5L), Val = c(2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L,
2L)), row.names = c(NA, -9L), class = "data.frame")

关于r - pivot_wider 是否有替代的 r 基函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67778341/

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