我有一个38467 * 59的数据框。这是整个数据集的子集
mydata.2
Unique.Groups Protein.group.IDs Intensity.R1 Intensity.R2
1 yes 0 9701600 17971000
2 yes 0 0 29308000
3 yes 1 49083000 75300000
4 yes 2 53926000 13926000
5 yes 3 35255000 35750000
6 yes 3 302600000 295410000
7 yes 4 72766000 51914000
8 yes 5 33657000 31027000
9 yes 5 16504000 20689000
10 yes 5 191170000 209230000
11 yes 5 155710000 150280000
12 yes 5 402890000 529300000
13 yes 5 633480000 522180000
14 yes 5 92339000 0
15 yes 6 0 30646000
16 yes 6 67494000 92326000
17 yes 6 20205000 0
18 yes 7 94183000 76848000
19 yes 7 15584000 0
20 yes 7 27247000 38961000
21 yes 7 98433000 390870000
22 yes 8 0 36542000
23 yes 8 83978000 0
24 yes 8 53744000 95173000
25 yes 8 0 53494000
我将以下代码应用于Intensity.R1列,并且我想自动将其应用于数据框的所有Intensities列。 在每一轮我都需要在Intensity.R1,Intensity.R2上运行相同的代码,等等。
data.normalized <- filter(mydata.2, Unique.Groups == "yes") %>%
group_by(Protein.group.IDs) %>%
arrange(desc(Intensity.R1)) %>%
top_n(3, Intensity.R1) %>%
mutate(sum.top.3.R1 = sum(Intensity.R1)) %>%
filter(!duplicated(Protein.group.IDs)) %>%
drop.levels() %>%
arrange(Protein.group.IDs)
每一轮都应该生成一个新列(即sum.top.3),我希望在最终表中将它们绑定在一起。 以下是Intensity.R1列的示例。
data.normalized
Source: local data frame [9 x 5]
Groups: Protein.group.IDs
Unique.Groups Protein.group.IDs Intensity.R1 Intensity.R2 sum.top.3.R1
1 yes 0 9701600 17971000 9701600
2 yes 1 49083000 75300000 49083000
3 yes 2 53926000 13926000 53926000
4 yes 3 302600000 295410000 337855000
5 yes 4 72766000 51914000 72766000
6 yes 5 633480000 522180000 1227540000
7 yes 6 67494000 92326000 87699000
8 yes 7 98433000 390870000 219863000
9 yes 8 83978000 0 137722000
答案 0 :(得分:1)
我创建了一个具有相同列名的简单示例供您修改。
GetAll
即使在您的代码中,如果您使用了&#34;汇总&#34;而不是&#34;变异&#34;你不必过滤掉重复的id。 我不知道我是否在这里丢失了drop.levels的内容。 另外,我真的不认为你需要第一个&#34;安排&#34;因为top_n将保持前三名,但不是正确的顺序(这不是问题)。