r - 如何根据其他变量创建新的序数变量?

标签 r variables conditional-statements sequences

社区的所有成员大家好。 这个问题可能看起来与我之前问过的另一个问题相同,因此可能是重复,但请求输出肯定与上一个问题不同。

我有以下数据库:

ID1=rep((1:1),20)
ID2=rep((2:2),20)
ID3=rep((3:3),20)
ID<-c(ID1,ID2,ID3)
DATE1=rep("2013-1-1",10)
DATE2=rep("2013-1-2",10)
DATE=c(DATE1,DATE2)
IN<-data.frame(ID,DATE=rep(DATE,3))

我想创建一个新变量,它可以识别每个 id 记录了多少突发(突发定义为每天内的观察周期),如下所示:

IN$BURSTTRUE<-rep(c(rep(1,10),rep(2,10)),3)

到目前为止,我已经尝试过这个解决方案(但不幸的是它不起作用,因为它正确地识别每个突发,但不是根据每个 id)。

IN$BURST<-with(IN,as.numeric(interaction(IN$ID,IN$DATE,lex.order=TRUE)))

我认为函数ave可能有助于解决此任务:我尝试了几种组合,但没有任何效果,因此我报告的解决方案更接近请求输出。 一如既往,我们非常感谢任何建议!

最佳答案

首先使用参数 stringsAsFactors=FALSE 创建 data.frame IN,如下所示:

IN <- data.frame(ID,DATE=rep(DATE,3), stringsAsFactors=FALSE)

然后使用ave:

IN <- within(IN, { bla <- ave(DATE, ID, FUN=function(x) as.numeric(factor(x)))})

如果您想要聚合(如西蒙的答案),也可以使用ave来完成:

unique(within(IN, { bla <- ave(DATE, list(ID,DATE), FUN=length)}))

或者,使用table,如注释所示:

as.data.frame(table(IN$ID, IN$DATE))

关于r - 如何根据其他变量创建新的序数变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16373246/

相关文章:

javascript - 在正则表达式字符集中使用变量

基于 date_time 索引值的 Python/pandas 条件语句

rollapply() 由 n 个月

用于 node.js 并行处理的 R plumber 包

r - 在两个数据集的小平面包裹 ggplot 上查找多个峰值密度

带变量的 JavaScript 重定向

java - 从java启动R进程

用 * 与 $ 定义的 Perl 变量

带有变量赋值的 Python 隐式 if 语句——这是如何工作的?

mysql - SQL-Query 在应该返回一个的地方返回 2 个返回值