有没有相当于tidyr%的方法来做这件事?我所拥有的是有效的,但我只是在努力学习这tidyr个函数.花了大约一个小时试图强迫chat GPT向我展示如何做到这一点,但都没有奏效.我把它分成多个步骤,只是为了帮助我排除故障.我最终会用管道重新组合成一个步骤.

注意:数据帧本身是相当大的,有56000行和1,000列.我没有办法共享它,所以包括下面的head()输出.我不确定至少需要什么信息才能提供帮助.

# Step 1: Create the key column
temp1 <- BRes3 %>%
  mutate(key1 = paste(Group, n, sep = "-"))

# Step 2: Remove unnecessary columns
temp2 <- temp1 %>%
  select(key1, everything(), -mean, -`mean CI`, -sdev, -UCI, -LCI, -CIR, -n, -Group)

# Step 3: Transpose the data and set column names
temp3 <- setNames(data.frame(t(temp2[-1])), temp2$key1)

步骤2的数据帧 struct :

> head(temp2[1:5])
     key1             est1             est2             est3             est4
X2 X1.A-2        10.799982        10.304256         10.20124         9.550119
X3 X1.A-3 10.3659866666667        10.465434 11.1673413333333 10.8014426666667
X4 X1.A-4        10.679331        10.781562        10.025603       10.1510665
X5 X1.A-5       11.4224648       11.6025256       10.5983192        11.618744
X6 X1.A-6 10.1707603333333 11.0518533333333        10.416587         10.18374
X7 X1.A-7        10.590982 10.6979774285714 10.6989508571429 10.1854577142857

所需的最终 struct :

> head(temp3[1:5])
        X1.A-2           X1.A-3     X1.A-4     X1.A-5           X1.A-6
est1 10.799982 10.3659866666667  10.679331 11.4224648 10.1707603333333
est2 10.304256        10.465434  10.781562 11.6025256 11.0518533333333
est3  10.20124 11.1673413333333  10.025603 10.5983192        10.416587
est4  9.550119 10.8014426666667 10.1510665  11.618744         10.18374
est5 10.800006         9.970464 11.5241455 11.6005004 10.9990463333333
est6  12.30192 11.0995906666667  10.449673 10.2591216 10.7492366666667

推荐答案

如果除key1列之外的所有列都属于同一类(此处为numeric),我们可以执行以下操作(从temp2开始):

library(tidyr)
temp2 |>
  pivot_longer(cols = where(is.numeric)) |>
  pivot_wider(id_cols = name, names_from = "key1")
# # A tibble: 4 × 7
#   name  `X1.A-2` `X1.A-3` `X1.A-4` `X1.A-5` `X1.A-6` `X1.A-7`
#   <chr>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
# 1 est1     10.8      10.4     10.7     11.4     10.2     10.6
# 2 est2     10.3      10.5     10.8     11.6     11.1     10.7
# 3 est3     10.2      11.2     10.0     10.6     10.4     10.7
# 4 est4      9.55     10.8     10.2     11.6     10.2     10.2

数据

temp2 <- structure(list(key1 = c("X1.A-2", "X1.A-3", "X1.A-4", "X1.A-5", "X1.A-6", "X1.A-7"), est1 = c(10.799982, 10.3659866666667, 10.679331, 11.4224648, 10.1707603333333, 10.590982), est2 = c(10.304256, 10.465434, 10.781562, 11.6025256, 11.0518533333333, 10.6979774285714), est3 = c(10.20124, 11.1673413333333, 10.025603, 10.5983192, 10.416587, 10.6989508571429), est4 = c(9.550119, 10.8014426666667, 10.1510665, 11.618744, 10.18374, 10.1854577142857)), class = "data.frame", row.names = c("X2", "X3", "X4",  "X5", "X6", "X7"))

R相关问答推荐

带有gplot 2的十字舱口

使用R的序列覆盖

在R中列表的结尾添加数字载体

如何从R中的字符串元素中减go 一个数字?

为什么横向页面会导致officeverse中的页码/节头/页脚出现问题?

如何通过Docker部署我的shiny 应用程序(多个文件)

将嵌套列表子集化为嵌套列表

在R中使用数据集名称

删除具有相同标题的tabPanel(shinly)

为了网络分析目的,将数据框转换为长格式列联表

在保留列表元素属性的同时替换列表元素

R如何将列名转换为更好的年和月格式

R中的类别比较

当每个变量值只能 Select 一次时,如何从数据框中 Select 两个变量的组合?

如何使用字符串从重复的模式中提取多个数字?

数值型数据与字符混合时如何进行绑定

TidyVerse中长度不等的列结合向量

对计算变量所有唯一值的变量进行变异

使用点图调整离散轴比例

R data.设置函数&;连接中的列值而不使用for循环的表方法?