计算大于另一个日期的日期数 - R.

时间:2018-03-08 20:18:19

标签: r dplyr

我不知道从哪里开始,但我想要做的是根据另一列中另一个值表示的次数创建一个新值。

例如

guides

希望输出看起来像

# Existing Data
key newcol
a   ?
a   ?
a   ?
b   ?
b   ?
c   ?
c   ?
c   ?

谢谢!

2 个答案:

答案 0 :(得分:1)

这可以通过doBy包来实现,如下所示:

require(doBy)

#original data frame
df <- data.frame(key = c('a', 'a', 'a', 'b', 'b', 'c', 'c', 'c'))

#add counter 
df$count <- 1

#use summaryBy to count number of instances of key
counts <- summaryBy(count ~ key, data = df, FUN = sum, var.names = 'newcol', keep.names = TRUE)

#merge counts into original data frame
df <- merge(df, counts, by = 'key', all.x = TRUE)

df然后看起来像:

> df
  key count newcol
1   a     1      3
2   a     1      3
3   a     1      3
4   b     1      2
5   b     1      2
6   c     1      3
7   c     1      3
8   c     1      3

答案 1 :(得分:-1)

如果key是这样的向量key <- rep(c("a", "b", "c"), c(3,2,3)),那么您可以使用table来计算key元素的出现次数

> N <- table(key)
> data.frame(key, newcol=rep(N,N))
  key newcol
1   a      3
2   a      3
3   a      3
4   b      2
5   b      2
6   c      3
7   c      3
8   c      3

另一方面,如果key是data.frame,那么......

key.df <- data.frame(key = rep(letters[1:3], c(3, 2, 3)))
N <- table(key.df$key)
data.frame(key=key.df, newcol=rep(N, N))