gpt4 book ai didi

r - 使用字符串查找唯一行并对数据框列的相应值求和

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

我有一个数据框:

gene=c("Esr", "Esr", "Esr", "Nop", "Nop", "Nop", "Stu", "Mkp", "Mkp", "P53", "Ard", "Ard")
int_1=c(34,56,544,566,123,00,343,56,22,10,11,19)
int_2=c(24,26,58,56,13,00,34,6,22,10,119,109)
int_3=c(14,36,54,566,12,00,43,56,00,770,11,119)
df1 = cbind.data.frame(gene, int_1, int_2, int_3)
  1. df1 长 26000 行,宽 36 列。
  2. 我想创建一个新的 df2,在其中查找“基因”列以查找唯一的字符串/文本,并将行中的所有值汇总在一起以获得相应的单个强度列。
  3. 在 df1 中,基因名称出现了多次。 df2 每个基因只有一次。

我正在尝试使用 tidyverse 包,所以使用这些包的解决方案 将不胜感激(如果可能)。非常感谢。

最佳答案

我们可以使用dplyr::summarise_all

(1) 到平均值

library(tidyverse)
df2 <- df1 %>%
group_by(gene) %>%
summarise_all(mean)
df2;
## A tibble: 6 x 4
# gene int_1 int_2 int_3
# <fct> <dbl> <dbl> <dbl>
#1 Ard 15.0 114. 65.0
#2 Esr 211. 36. 34.7
#3 Mkp 39.0 14. 28.0
#4 Nop 230. 23. 193.
#5 P53 10.0 10. 770.
#6 Stu 343. 34. 43.0

(2) 求和

df2 <- df1 %>%
group_by(gene) %>%
summarise_all(sum)
df2;
## A tibble: 6 x 4
# gene int_1 int_2 int_3
# <fct> <dbl> <dbl> <dbl>
#1 Ard 30. 228. 130.
#2 Esr 634. 108. 104.
#3 Mkp 78. 28. 56.
#4 Nop 689. 69. 578.
#5 P53 10. 10. 770.
#6 Stu 343. 34. 43.

或者在 base R 中你可以使用 aggregate

aggregate(cbind(int_1, int_2, int_3) ~ gene, data = df1, sum)
# gene int_1 int_2 int_3
#1 Ard 30 228 130
#2 Esr 634 108 104
#3 Mkp 78 28 56
#4 Nop 689 69 578
#5 P53 10 10 770
#6 Stu 343 34 43

关于r - 使用字符串查找唯一行并对数据框列的相应值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50979402/

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