我已经与样本数据R有一个data.frame
,看起来像这样的:R:按列排序data.frame和有条件地删除行
dat <- data.frame(NAME=c("NAME1","NAME1","NAME1","NAME1","NAME2","NAME2","NAME2","NAME2") , SURVEY_YEAR =c(1947,1958,1978,1987,1963,1991,2004,1993), REFERENCE_YEAR=c(1934,1947,1974,1947,1944,1987,1993,1987), VALUE=c(10,15,13,20,-2,7,12,-19))
dat
NAME SURVEY_YEAR REFERENCE_YEAR VALUE
1 NAME1 1947 1934 10
2 NAME1 1958 1947 15
3 NAME1 1978 1974 13
4 NAME1 1987 1947 20
5 NAME2 1963 1944 -2
6 NAME2 1991 1987 7
7 NAME2 2004 1993 12
8 NAME2 1993 1987 -19
我怎么可能通过REFERENCE_YEAR
首先排它(从低到高):
NAME SURVEY_YEAR REFERENCE_YEAR VALUE
1 NAME1 1947 1934 10
2 NAME1 1958 1947 15
3 NAME1 1987 1947 20
4 NAME1 1978 1974 13
5 NAME2 1963 1944 -2
6 NAME2 1991 1987 7
7 NAME2 1993 1987 -19
8 NAME2 2004 1993 12
然后如果REFERENCE_YEAR
一年是一样的,删除从dat
覆盖更长的时间(从REFERENCE_YEAR
到SURVEY_YEAR
)的一个,然后写入删除RO ws变成新的data.frame
?
与样本数据的data.frame应该是这样的结尾:
NAME SURVEY_YEAR REFERENCE_YEAR VALUE
1 NAME1 1947 1934 10
2 NAME1 1958 1947 15
3 NAME1 1978 1974 13
4 NAME2 1963 1944 -2
5 NAME2 1991 1987 7
6 NAME2 2004 1993 12
试过你的plyr例子,但是我得到的是一个错误,它找不到函数%<%? – kurdtc 2014-09-11 11:36:28
@redshoe我用过'dplyr'。 '%>%'是您使用包的操作符。 – jazzurro 2014-09-11 13:38:55
感谢您的信息!这个作品很棒!即使通过Bonded Dust的解决方案解决了上述问题! – kurdtc 2014-09-11 13:48:22