R中的群与转置

R中的群与转置,r,group-by,transpose,R,Group By,Transpose,我有这个数据集[在这里输入图像描述][1](列名为Cancer&Frequency) 我希望输出中有CNS PiloAstro和Eso Adoneca作为列名,并在下面列出频率。我如何根据“癌症”对它们进行分组和转置? [1]: 谢谢你的帮助 这将频率相加,并将癌症作为列名 cns=c(1,4,1,1,3,1,2,6,5,1,2,1,2,3,4) eso=c(125,131,80,69,34,204,123,137,66,112,113,126,125,73,218,130,57,314) d

我有这个数据集[在这里输入图像描述][1](列名为Cancer&Frequency)

我希望输出中有CNS PiloAstro和Eso Adoneca作为列名,并在下面列出频率。我如何根据“癌症”对它们进行分组和转置? [1]:
谢谢你的帮助

这将频率相加,并将癌症作为列名

cns=c(1,4,1,1,3,1,2,6,5,1,2,1,2,3,4)
eso=c(125,131,80,69,34,204,123,137,66,112,113,126,125,73,218,130,57,314)
df=data.frame(cancer=c(rep("CNS-PiloAstro", length(cns)), rep("Eso-AdenoCa", length(eso))), freq=c(cns, eso))
library(dplyr)
library(tidyr)
df1=group_by(df, cancer) %>% summarize(across(freq ,sum))
pivot_wider(df1, names_from=cancer, values_from=freq)

# A tibble: 1 x 2
  `CNS-PiloAstro` `Eso-AdenoCa`
            <dbl>         <dbl>
1              37          2237
cns=c(1,4,1,1,3,1,2,6,5,1,2,1,2,3,4)
eso=c(125131,80,69,34204123137,66112113126125,73218130,57314)
df=数据帧(癌症=c(代表(“CNS PiloAstro”,长度(CNS)),代表(“Eso AdenoCa”,长度(Eso))),频率=c(CNS,Eso))
图书馆(dplyr)
图书馆(tidyr)
df1=分组依据(df,癌症)%>%总结(跨越(频率,总和))
枢轴宽度(df1,名称=癌症,值=频率)
#一个tibble:1x2
`CNS PiloAstro ``Eso腺癌`
1              37          2237
或者,如果您想保持单个频率,可以执行以下操作:

df2=data.frame()
cancers=unique(df$cancer)
for (i in 1:length(cancers)) {
  val=filter(df, cancer==cancers[i]) %>% select(freq) %>% unlist()
  tmp=data.frame(val)
  colnames(tmp)=cancers[i]
  if (i==1) {
    df2=tmp
    next
  }
  if (nrow(tmp) < nrow(df2)) {
    extra=nrow(df2)-nrow(tmp)
    for (j in 1:extra) {
      tmp[nrow(tmp)+1,]=NA
    }
  } else if (nrow(tmp) > nrow(df2)) {
    extra=nrow(tmp)-nrow(df2)
    for (j in 1:extra) {
      df2[nrow(df2)+1,]=rep(NA, ncol(df2))
    }
  }
  df2=cbind(df2, tmp)
}
df2

       CNS-PiloAstro Eso-AdenoCa
freq1              1         125
freq2              4         131
freq3              1          80
freq4              1          69
freq5              3          34
freq6              1         204
freq7              2         123
freq8              6         137
freq9              5          66
freq10             1         112
freq11             2         113
freq12             1         126
freq13             2         125
freq14             3          73
freq15             4         218
16                NA         130
17                NA          57
18                NA         314
df2=data.frame()
癌症=唯一(df$癌症)
用于(i/1:长度(癌症)){
val=filter(df,cancer==cancers[i])%%>%select(freq)%%>%unlist()
tmp=数据帧(val)
colnames(tmp)=癌症[i]
如果(i==1){
df2=tmp
下一个
}
如果(nrow(tmp)nrow(df2)){
额外=nrow(tmp)-nrow(df2)
用于(j in 1:额外){
df2[nrow(df2)+1,]=rep(NA,ncol(df2))
}
}
df2=cbind(df2,tmp)
}
df2
中枢神经系统PiloAstro-Eso腺癌
频率11125
频率2 4 131
频率3180
频率4169
频率5 3 34
频率6 1 204
频率7 2 123
频率8 6 137
频率9566
频率101112
频率11 2 113
频率12 1 126
频率13 2 125
频率14373
频率15 4 218
16 NA 130
17 NA 57
18 NA 314

请让那些试图帮助您的人更方便。不要将数据/代码添加为图像。提供一个可复制的示例以及预期输出。了解。