我对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)
我正在寻找以下解决方案:
Year 2008 2009 2010 ...
Ticker
A 9 11 7
B 11 2 6
C
D
我想得到一个这样的表格,例如让我回来,列中的价值多久和#34;价值&#34;出现在&#34; RANDOM&#34;在2008年。
到目前为止,我只能得到一张表格,告诉我我多久得一次比赛 RANDOM和Year,但不是我的第三列。像这样:
Year 2008 2009 2010 ...
RANDOM
A 4 5 6
B
C
如果你能帮我解决这个问题,我将非常感激。 谢谢! :)
答案 0 :(得分:0)
您实际上接近解决方案。我还想强调首先看看如何制作一个好的可重复的例子(至少对你的下一个问题) - &gt; How to make a great R reproducible example?
以下是一个如何查找数据的示例:
# 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
答案 1 :(得分:0)
您也可以使用count
而不使用summarise
;它将创建一个名为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()