Dataframe 基于其他两列的列的频率计数

Dataframe 基于其他两列的列的频率计数,dataframe,Dataframe,我对r比较陌生,我有以下问题,希望你能帮我解决 我有一个列为RANDOM.s的表。 另一列显示了年份。第三列表示一些值或NA RANDOM <- sample(c("A","B","C","D"), size = 100, replace = TRUE) Year <- sample(c(2008,2009,2010), 100, TRUE) Value <- sample(c(0.22, NA), 100, TRUE) 我想得到一个像这样的表格,例如,它可以告诉我,在200

我对r比较陌生,我有以下问题,希望你能帮我解决

我有一个列为RANDOM.s的表。 另一列显示了年份。第三列表示一些值或NA

RANDOM <- sample(c("A","B","C","D"), size = 100, replace = TRUE)
Year <- sample(c(2008,2009,2010), 100, TRUE)
Value <- sample(c(0.22, NA), 100, TRUE)
我想得到一个像这样的表格,例如,它可以告诉我,在2008年,“Value”列中的值在“RANDOM”中出现的频率

到目前为止,我只能得到一张显示我多久参加一次比赛的表格 随机和年份,但不是我第三列的计数。像这样:

     Year 2008 2009 2010 ...  
 RANDOM
 A        4    5    6
 B
 C
如果你能帮我解决这个问题,我将非常感激。
谢谢!:)

实际上,您已接近解决方案。我还想强调的是,首先要检查如何制作一个好的可复制示例(至少对于您的下一个问题)-->

下面是它如何查找您的数据的示例:

        # Make up some demo data

    Ticker <- sample(c("A","B","C","D"), size = 100, replace = TRUE)
    Year <- sample(c(2008,2009,2010), 100, TRUE)
    Value <- sample(c(0.22, NA), 100, TRUE)

    data <- data.frame(Ticker,Year,Value)

    # open dplyr library
    library(dplyr)

    #Group data by Ticker and year and count Values that are not NA 
    data %>% group_by(Ticker, Year) %>% summarise(count = length(Value[!is.na(Value)]))

   Ticker  Year count
   <fctr> <dbl> <int>
1       A  2008     9
2       A  2009    11
3       A  2010     7
4       B  2008    11
5       B  2009     2
6       B  2010     6
7       C  2008     7
8       C  2009    10
9       C  2010     9
10      D  2008     5
11      D  2009    12
12      D  2010    11
#制作一些演示数据

Ticker您也可以使用
计数
而不使用
摘要
;它将创建一个名为
n

# some example data
df <- data_frame(
    Ticker = c(LETTERS[1:5],LETTERS[1:5]),
    y2008 = sample(1:3,10,replace = T),
    y2009 = sample(1:3,10,replace = T),
    y2010 = sample(1:3,10,replace = T)
)

df %>% 
    gather(key,value,-Ticker) %>% 
    group_by(Ticker,key,value) %>% 
    count()
#一些示例数据
df%
聚集(键,值,-标记器)%>%
分组依据(代码、键、值)%>%
计数()

使用aggregate()或dplyr可以很容易地解决这个问题,但是,请提供一个可复制的示例。请不要将数据作为屏幕截图发布。使用
dput
包含最小的可表示数据集。还包括任何代码尝试。欢迎您!如果你能把问题标记为已回答并投票就好了!谢谢,祝你周末愉快!
# some example data
df <- data_frame(
    Ticker = c(LETTERS[1:5],LETTERS[1:5]),
    y2008 = sample(1:3,10,replace = T),
    y2009 = sample(1:3,10,replace = T),
    y2010 = sample(1:3,10,replace = T)
)

df %>% 
    gather(key,value,-Ticker) %>% 
    group_by(Ticker,key,value) %>% 
    count()