我對R相對較新,並且無法創建基於其他值求和某些值的向量。我不太確定問題是什麼。我沒有收到錯誤信息,但輸出結果不是我想要的。這裏是一個重複的例子:基於R中的其他值對列中的值進行求和
fakeprice <- c(1, 2, 2, 1, NA, 5, 4, 4, 3, 3, NA)
fakeconversion <-c(.2, .15, .07, .25, NA, .4, .36, NA, .67, .42, .01)
fakedata <- data.frame(fakeprice, fakeconversion)
fake.list <- sort(unique(fakedata$fakeprice))
fake.sum <- vector(,5)
所以,fakedata
樣子:
fakeprice fakeconversion
1 1 0.20
2 2 0.15
3 2 0.07
4 1 0.25
5 NA NA
6 5 0.40
7 4 0.36
8 4 NA
9 3 0.67
10 3 0.42
11 NA 0.01
我認爲問題出在NAS,但我不是很確定(也有不少在原始數據集)。這裏是嵌套if語句的for循環。我一直得到一個錯誤,當價格爲「NA」,所以我增加了is.na()
:
for(i in fake.list){
sum=0
for(j in fakedata$fakeprice){
if(is.na(fakedata$fakeprice[j])==TRUE){
NULL
} else {
if(fakedata$fakeprice[j]==fake.list[i]){
sum <- sum+fakedata$fakeconversion[j]
}}
}
fake.sum[i]=sum
}
sumdata <- data.frame(fake.list, fake.sum)
我正在尋找的是爲每一個獨特的價格加起來fakeconversion
輸出。所以,對於fakeprice=1
,fake.sum=0.45
。由此產生的數據我找會是什麼樣子:
fake.list fake.sum
1 1 0.45
2 2 0.22
3 3 1.09
4 4 0.36
5 5 0.40
我能得到什麼,卻是:
sumdata
fake.list fake.sum
1 1 0.90
2 2 0.44
3 3 0.00
4 4 0.00
5 5 0.00
任何幫助是非常感謝!
如果R,你不會使用那樣的循環。你只需要使用'aggregate(fakeconversion〜fakeprice,fakedata,sum)'。這會給你你想要的結果。 – MrFlick