考慮一個數據幀變更值,其中觀測的n組具有5個變量(AE))創建一個循環來查找在一個代表呼叫
set.seed(1234)
df <- data.frame(group=c(rep("g1",5), rep("g2",5), rep("g3",5)),
variable=LETTERS[1:5],
frequency=sample(1:10, 15, replace=T))
基團頻率值(G1,G2,G3 )但是具有不同的尺寸,例如g1 = 10,g2 = 20,g3 = 30。我想將它作爲數據框中的「偏移量」列來引入,以便稍後計算組成數據(頻率/偏移量)。 我可以手動分配這一點,由(10,20,30)5次(每個變量)寫入組大小到新列:
df$offset <- c(rep(10,5), rep(20,5), rep(30,5))
df$rel <- df$frequency/df$offset*100
導致
df
group variable frequency offset rel
1 g1 A 2 10 20.00000
2 g1 B 7 10 70.00000
3 g1 C 7 10 70.00000
4 g1 D 7 10 70.00000
5 g1 E 9 10 90.00000
6 g2 A 7 20 35.00000
7 g2 B 1 20 5.00000
8 g2 C 3 20 15.00000
9 g2 D 7 20 35.00000
10 g2 E 6 20 30.00000
11 g3 A 7 30 23.33333
12 g3 B 6 30 20.00000
13 g3 C 3 30 10.00000
14 g3 D 10 30 33.33333
15 g3 E 3 30 10.00000
的問題是現在我有更多的組(120),我不想爲每個組手動分配偏移量。 我有一個向量
abund <- sample(1:100, 120, replace=TRUE)
其中寫組的大小。 我可以使用此矢量圖將每個組的大小寫入rep
調用df$offset
?
df$offset <- c(rep(abund[1],5), rep(abund[2],5), rep(abund[3],5), ..., rep(abund[i], 5))
我認爲它是一些for循環,但我不能自己處理這個。
對不起,無法提出一個更好的名字。
所需的輸出:
df
group variable frequency offset rel
1 g1 A 2 abund[1] 20.00000
2 g1 B 7 abund[1] 70.00000
3 g1 C 7 abund[1] 70.00000
4 g1 D 7 abund[1] 70.00000
5 g1 E 9 abund[1] 90.00000
6 g2 A 7 abund[2] 35.00000
7 g2 B 1 abund[2] 5.00000
8 g2 C 3 abund[2] 15.00000
9 g2 D 7 abund[2] 35.00000
10 g2 E 6 abund[2] 30.00000
11 g3 A 7 abund[3] 23.33333
12 g3 B 6 abund[3] 20.00000
13 g3 C 3 abund[3] 10.00000
14 g3 D 10 abund[3] 33.33333
15 g3 E 3 abund[3] 10.00000
.. gi A n abund[i] ..
.. gi B n abund[i] ..
.. gi C n abund[i] ..
.. gi D n abund[i] ..
.. gi E n abund[i] ..
請注意,組名稱實際上是不同的(它們所代表的生物類羣)。謝謝。
另外請加'set.seed'使'sample'重複性 – Sotos
取代= F改爲取代= T – nouse
你能也添加您想要的結果? –