簡體   English   中英

根據2列或更多列中的值計算頻率

[英]count frequency based on values in 2 or more columns

我有一個非常簡單的問題,但我想不出不使用if語句的方法

我擁有的數據如下所示:

df <- structure(list(years = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), id = c(1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), x = structure(c(2L, 
1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 
1L), .Label = c("E", "I"), class = "factor")), .Names = c("years", 
"id", "x"), class = "data.frame", row.names = c(NA, -18L))

因此表如下所示:

   years id x
1      1  1 I
2      2  1 E
3      3  1 E
4      1  1 E
5      2  1 I
6      3  1 I
7      1  2 I
8      2  2 E
9      3  2 I
10     1  2 E
11     2  2 E
12     3  2 I
13     1  3 I
14     2  3 E
15     3  3 I
16     1  3 I
17     2  3 I
18     3  3 E

我希望輸出報告每個ID和每年x的分數“ I”:

   years id xnew
1      1  1 0.5
2      2  1 0.5
3      3  1 0.5
4      1  2 0.5
5      2  2 0.0
6      3  2 1.0
7      1  3 1.0
8      2  3 0.5
9      3  3 0.5

任何幫助將不勝感激! 謝謝!

aggregate(x ~ years + id, data=df, function(y) sum(y=="I")/length(y) )

  years id   x
1     1  1 0.5
2     2  1 0.5
3     3  1 0.5
4     1  2 0.5
5     2  2 0.0
6     3  2 1.0
7     1  3 1.0
8     2  3 0.5
9     3  3 0.5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM