R 如何计算一行';s列的值大于另一列的值?
我有一个数据集(df1),其中有许多成对的值。一行为一年(如2014年),另一行为另一年(如2013年)。对于每一对,G列中有一个值。我需要一个计数,其中较高年份的G值小于较低年份的G值 以下是数据集df1的dput:R 如何计算一行';s列的值大于另一列的值?,r,group-by,R,Group By,我有一个数据集(df1),其中有许多成对的值。一行为一年(如2014年),另一行为另一年(如2013年)。对于每一对,G列中有一个值。我需要一个计数,其中较高年份的G值小于较低年份的G值 以下是数据集df1的dput: structure(list(Name = c("A.J. Ellis", "A.J. Ellis", "A.J. Pierzynski", "A.J. Pierzynski", "Aaron Boone", "Adam Kennedy", "Adam Melhuse", "
structure(list(Name = c("A.J. Ellis", "A.J. Ellis", "A.J. Pierzynski",
"A.J. Pierzynski", "Aaron Boone", "Adam Kennedy", "Adam Melhuse",
"Adrian Beltre", "Adrian Beltre", "Adrian Gonzalez", "Alan Zinter",
"Albert Pujols", "Albert Pujols"), Age = c(37, 36, 37, 36, 36,
36, 36, 37, 36, 36, 36, 37, 36), Year = c(2018, 2017, 2014, 2013,
2009, 2012, 2008, 2016, 2015, 2018, 2004, 2017, 2016), Tm = c("SDP",
"MIA", "TOT", "TEX", "HOU", "LAD", "TOT", "TEX", "TEX", "NYM",
"ARI", "LAA", "LAA"), Lg = c("NL", "NL", "ML", "AL", "NL", "NL",
"ML", "AL", "AL", "NL", "NL", "AL", "AL"), G = c(66, 51, 102,
134, 10, 86, 15, 153, 143, 54, 28, 149, 152), PA = c(183, 163,
362, 529, 14, 201, 32, 640, 619, 187, 40, 636, 650)), row.names = c(NA,
13L), class = "data.frame")
下面是一个TIBLE,显示要检查的行的外观:
以下是我用来创建TIBLE的代码:
df1 %>%
group_by(Name) %>%
filter(n() > 1)
我们可以
按Name
和Age
排列数据,并检查G
中的last
值是否小于first
值,并使用sum
计算出现的次数
library(dplyr)
df %>%
arrange(Name, Age) %>%
group_by(Name) %>%
summarise(check = last(G) < first(G)) %>%
pull(check) %>%
sum(., na.rm = TRUE)
#[1] 2
Ronak,这些代码行是如何产生行计数的:summary(check=last(G)%pull(check)%%>%sum(,na.rm=TRUE)
@Metsfancheck
是一个逻辑列,具有TRUE
/FALSE
值,我们pull
该列以获得向量,并使用sum
获得TRUE
值的计数。参见sum(c(真、假、真))和sum(c(真、假、真、假、真))的输出
df %>%
arrange(Name, Age) %>%
group_by(Name) %>%
filter(last(G) < first(G))
# Name Age Year Tm Lg G PA
# <chr> <dbl> <dbl> <chr> <chr> <dbl> <dbl>
#1 A.J. Pierzynski 36 2013 TEX AL 134 529
#2 A.J. Pierzynski 37 2014 TOT ML 102 362
#3 Albert Pujols 36 2016 LAA AL 152 650
#4 Albert Pujols 37 2017 LAA AL 149 636