a.p*_*ell 2 group-by r dataframe
我已经使用group_by()indplyr或aggregate()函数在R. 对于我目前的问题,我想按个人分组,但要找到一列(数字)的第二低和另一列(年份)的最低。所以,如果我的数据是这样的:
Number Individual Year Value
123 M. Smith 2010 234
435 M. Smith 2011 346
435 M. Smith 2012 356
524 M. Smith 2015 432
119 J. Jones 2010 345
119 J. Jones 2012 432
254 J. Jones 2013 453
876 J. Jones 2014 654
Run Code Online (Sandbox Code Playgroud)
我希望它变成:
Number Individual Year Value
435 M. Smith 2011 346
254 J. Jones 2013 453
Run Code Online (Sandbox Code Playgroud)
谢谢你。
我们可以使用这个dplyr包。dt2是最终的输出。想法是过滤掉Number列中的最小值,然后按Individual、Number、 和排列数据框Year。最后,选择每组的第一行。
# Load package
library(dplyr)
# Create example data frame
dt <- read.table(text = "Number Individual Year Value
123 'M. Smith' 2010 234
435 'M. Smith' 2011 346
435 'M. Smith' 2012 356
524 'M. Smith' 2015 432
119 'J. Jones' 2010 345
119 'J. Jones' 2012 432
254 'J. Jones' 2013 453
876 'J. Jones' 2014 654",
header = TRUE, stringsAsFactors = FALSE)
# Process the data
dt2 <- dt %>%
group_by(Individual) %>%
filter(Number != min(Number)) %>%
arrange(Individual, Number, Year) %>%
slice(1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
881 次 |
| 最近记录: |