2017-03-14 20 views
2

在R中,我試圖根據發佈商在我的數據中出現的次數和權重對我的調查分配權重,以便每條記錄均代表每個發佈商添加列以顯示根據變量計數的權重

說我有這樣一個數據幀:

ID site 1 publisherA 2 PublisherB 3 PublisherC 4 PublisherA 5 PublisherD

我想一列追加到這個框架有不同的地方的數據是從哪裏來的網站上/代表性不足的重量:

site weight 1 publisherA 0.625 #publisher A appears 2/5 times and is weighted to match 1/4 (4 publishers) 2 PublisherB 1.25 #publisher B appears 1/5 times and is weighted to match 1/4 3 PublisherC 1.25 4 PublisherA 0.625 5 PublisherD 1.25

我還使用一個權重包裝和anesrake包放在另一組數據耙的,但我覺得有這樣做的,而不是耙對一個變量這一個任務,一個簡單的方法。

回答

1

您可以使用avesite進行分組並統計每個發佈者的外觀。

NROW(df)/ave(seq_along(df$ID), df$site, FUN = length)/length(unique(df$site)) 
#[1] 0.625 1.250 1.250 0.625 1.250 


DATA

df = structure(list(ID = 1:5, site = c("PublisherA", "PublisherB", 
"PublisherC", "PublisherA", "PublisherD")), .Names = c("ID", 
"site"), class = "data.frame", row.names = c(NA, -5L)) 
0

我們還可以用table

df$weight <- with(df, c((length(site)/table(site)/length(unique(site)))[site])) 
df$weight 
#[1] 0.625 1.250 1.250 0.625 1.250