Dataframe 基于其他两列的列的频率计数
我对r比较陌生,我有以下问题,希望你能帮我解决 我有一个列为RANDOM.s的表。 另一列显示了年份。第三列表示一些值或NADataframe 基于其他两列的列的频率计数,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
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()