gpt4 book ai didi

r - 将列标题拆分为 R 中的行元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:29 26 4
gpt4 key购买 nike

在使用 R 对更大的数据集执行数据分析后,我得到如下示例数据所示的输出:

   A_B C_D E_F G_H
1 1 1 0 0
2 1 0 1 1
3 1 1 0 1
4 0 0 1 1
5 1 0 1 1
6 0 0 0 1

目前,我正在尝试将列标题拆分成这样它们作为元素出现在两个不同的列中,并且我得到它们所代表的列的总和。它看起来像这样:

   P1  P2  Sum
1 A B 4
2 C D 2
3 E F 3
4 G H 5

对于每列的总和,我可以直接使用 colSums(),但是我对如何拆分列标题并使它们显示为上述单元格元素感到纠结。

请告诉我有关如何处理此问题的任何建议,谢谢。

最佳答案

生成样本数据

df1 <- structure(list(A_B = c(1L, 1L, 1L, 0L, 1L, 0L), C_D = c(1L, 0L, 
1L, 0L, 0L, 0L), E_F = c(0L, 1L, 0L, 1L, 1L, 0L), G_H = c(0L,
1L, 1L, 1L, 1L, 1L)), .Names = c("A_B", "C_D", "E_F", "G_H"),
class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))

方法一:strsplit

d1 <- data.frame(do.call(rbind, strsplit(names(df1), "_")), Sum = as.vector(colSums(df1)))
names(d1)[1:2] <- c('P1', 'P2')
d1
# P1 P2 Sum
#1 A B 4
#2 C D 2
#3 E F 3
#4 G H 5

方法二:tidyverse

library(tidyverse)
gather(df1) %>%
separate(key, into = c('P1', 'P2')) %>%
group_by(P1, P2) %>%
summarise(Sum = sum(value))
# A tibble: 4 x 3
# Groups: P1 [?]
# P1 P2 Sum
# <chr> <chr> <int>
#1 A B 4
#2 C D 2
#3 E F 3
#4 G H 5

关于r - 将列标题拆分为 R 中的行元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954851/

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