我有一個向量和一個資料框,如下所示:
class.interest <- c("a", "b", "c", "d", "e")
df <- data.frame("Subject" = c(rep("A",3), rep("B",3), rep("C",5), "D", "E"),
"Class" = c("a", "b", "f", "b", "b", "e", "a", "b", "c", "e", "f", "c", "f"))
我想做的是計算class.interest每個Subjectin 中的元素出現的次數df。我希望得到這樣的結果:
# of occurrences count count.from.subject
0 1 E
1 1 D
2 2 A,B
3 0 NA
4 1 C
5 0 NA
為了進一步解釋這個輸出,
第一列 ( ) 只是指每個元素可能出現# of occurences多少次(所以它總是一個介于零和向量長度之間的整數串列)class.interestSubjectclass.interest
第二列 ( count) 是這樣計算的:
對于 subject A, 中有 3 個條目,但(不包括 )Class中只有兩個元素。對于 subject ,有兩個元素(資料框中有 3 個條目,但出現了兩次)。同理,subject有 4 個元素,有 1 個元素,沒有。class.interestfBB"b"CDE
所以我現在只是將上面描述的內容放入輸出中 - 例如,只有 subjectE沒有任何元素 in class.interest,因此是輸出的第一行。或者在 中既有主語A又有B兩個元素class.interest,第三行count變成 2。
誰能給我任何關于如何以這種方式計數的建議?
編輯:
感謝所有精彩的建議!是否也可以保留有關的資訊,Class而不僅僅是使用 計算頻率summarise?count這會使輸出變得更大,我不確定對于高于 1的行會有什么好的格式,也許像下面這樣?
# of occurrences count count.from.subject count.class
0 1 E NA
1 1 D c
2 2 A a,b
2 2 B b,e
3 0 NA NA
4 1 C a,b,c,e
5 0 NA NA
uj5u.com熱心網友回復:
你也可以這樣做:
df %>%
distinct() %>%
left_join(data.frame(Class= class.interest, count = 1)) %>%
group_by(Subject) %>%
summarise(count=sum(count, na.rm = TRUE))%>%
group_by(count) %>%
summarise(n=n(), Subject=toString(Subject))%>%
complete(count = 0:5, fill=list(n = 0))
# A tibble: 6 x 3
count n Subject
<dbl> <int> <chr>
1 0 1 E
2 1 1 D
3 2 2 A, B
4 3 0 NA
5 4 1 C
6 5 0 NA
uj5u.com熱心網友回復:
df %>% filter(Class != "f") %>%
group_by(Subject) %>%
summarise(`# of occurrences` = n_distinct(Class)) %>%
group_by(`# of occurrences`) %>%
summarise(count = length(Subject),
count.from.subject = paste(Subject, collapse = ","))
uj5u.com熱心網友回復:
你可以這樣做:
left_join(
tibble(num_occurrence = 0:length(class.interest)),
group_by(df, Subject) %>%
summarize(num_occurrence = sum(unique(Class) %in% class.interest)) %>%
group_by(num_occurrence) %>%
summarize(count = n(), count.from_subject = toString(c(Subject)))
) %>% mutate(count = ifelse(is.na(count), 0, count))
輸出:
num_occurrence count count.from_subject
<int> <dbl> <chr>
1 0 1 E
2 1 1 D
3 2 2 A, B
4 3 0 NA
5 4 1 C
6 5 0 NA
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/488548.html
