首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对两个变量进行分组时的错误msg

对两个变量进行分组时的错误msg
EN

Stack Overflow用户
提问于 2014-08-22 12:36:44
回答 1查看 36关注 0票数 1

我正在努力解决一些我认为应该非常直接的事情:下面的数据集包含两个变量: epis.start和epis.end;基于这两个变量的组合,我想给它们分配一个从1开始的分组变量,称为epis.id。

我使用了以下命令(.(DyadId),因为在完整的dataset中有许多不同的dyad!):

代码语言:javascript
复制
d <- ddply(d, .(DyadId), transform,
           epis.id=id(epis.start, epis.end))

但是,我收到以下错误消息:

错误:参数意味着不同的行数

有什么帮助吗?我开始怀疑=id()是否确实是正确的命令,但无法识别不同的命令。这个条目也让我相信我离得不远。Assigning group ID with ddply非常感谢!

(部分)数据集:

代码语言:javascript
复制
d<–structure(list(ConflictId = c("1-6", "1-6", "1-6", "1-6", "1-6", 
"1-6", "1-6", "1-6", "1-6", "1-6", "1-6", "1-6", "1-6", "1-6", 
"1-6", "1-6", "1-6", NA), DyadId = c(260L, 260L, 260L, 260L, 
260L, 260L, 260L, 260L, 260L, 260L, 260L, 260L, 260L, 260L, 260L, 
260L, 260L, NA), Year = c(1946L, 1966L, 1967L, 1968L, 1979L, 
1980L, 1981L, 1982L, 1983L, 1984L, 1985L, 1986L, 1987L, 1988L, 
1990L, 1993L, 1996L, NA), StartDate2 = structure(c(-8616, -1097, 
-1097, -1097, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 
3651, 3651, 7491, 8655, 9705, NA), class = "Date"), epis.start = c(1946L, 
1966L, 1966L, 1966L, 1979L, 1979L, 1979L, 1979L, 1979L, 1979L, 
1979L, 1979L, 1979L, 1979L, 1990L, 1993L, 1996L, NA), epis.end = c(1946L, 
1968L, 1968L, 1968L, 1988L, 1988L, 1988L, 1988L, 1988L, 1988L, 
1988L, 1988L, 1988L, 1988L, 1990L, 1993L, 1996L, NA)), .Names = c("ConflictId", 
"DyadId", "Year", "StartDate2", "epis.start", "epis.end"), row.names = c("700", 
"701", "702", "703", "704", "705", "706", "707", "708", "709", 
"710", "711", "712", "713", "714", "715", "716", "NA"), class = "data.frame")

这就是我想要的结果

代码语言:javascript
复制
ConflictId  DyadId  Year    StartDate2  epis.start  epis.end epis.id
1-6         260    1946     1946-05-31  1946         1946    1 
1-6         260    1966     1966-12-31  1966         1968    2
1-6         260    1967     1966-12-31  1966         1968    2
1-6         260    1968     1966-12-31  1966         1968    2
1-6         260    1979     1979-12-31  1979         1988    3
1-6         260    1980     1979-12-31  1979         1988    3
1-6         260    1981     1979-12-31  1979         1988    3
1-6         260    1982     1979-12-31  1979         1988    3
1-6         260    1983     1979-12-31  1979         1988    3
1-6         260    1984     1979-12-31  1979         1988    3
1-6         260    1985     1979-12-31  1979         1988    3 
1-6         260    1986     1979-12-31  1979         1988    3
1-6         260    1987     1979-12-31  1979         1988    3
1-6         260    1988     1979-12-31  1979         1988    3
1-6         260    1990     1990-07-06  1990         1990    4
1-6         260    1993     1993-09-12  1993         1993    5
1-6         260    1996     1996-07-28  1996         1996    6
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-22 12:47:10

这应该可以做到:

代码语言:javascript
复制
ddply(d, .(DyadId), transform, epis.id=id(list(epis.start, epis.end), drop=T))

注意,您需要将list放在变量周围,作为id的一个参数。生产:

代码语言:javascript
复制
   ConflictId DyadId Year StartDate2 epis.start epis.end epis.id
1         1-6    260 1946 1946-05-31       1946     1946       1
2         1-6    260 1966 1966-12-31       1966     1968       2
3         1-6    260 1967 1966-12-31       1966     1968       2
4         1-6    260 1968 1966-12-31       1966     1968       2
5         1-6    260 1979 1979-12-31       1979     1988       3
6         1-6    260 1980 1979-12-31       1979     1988       3
7         1-6    260 1981 1979-12-31       1979     1988       3
8         1-6    260 1982 1979-12-31       1979     1988       3
9         1-6    260 1983 1979-12-31       1979     1988       3
10        1-6    260 1984 1979-12-31       1979     1988       3
11        1-6    260 1985 1979-12-31       1979     1988       3
12        1-6    260 1986 1979-12-31       1979     1988       3
13        1-6    260 1987 1979-12-31       1979     1988       3
14        1-6    260 1988 1979-12-31       1979     1988       3
15        1-6    260 1990 1990-07-06       1990     1990       4
16        1-6    260 1993 1993-09-12       1993     1993       5
17        1-6    260 1996 1996-07-28       1996     1996       6
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25447220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档