R 数据框列:在这种情况下如何使用循环?
我有一个包含两列的数据框:person和points。在我的实际数据集中,有1000多人 我的目标是:我需要找到得分超过126分的人R 数据框列:在这种情况下如何使用循环?,r,loops,R,Loops,我有一个包含两列的数据框:person和points。在我的实际数据集中,有1000多人 我的目标是:我需要找到得分超过126分的人 library(tidyverse) person_filtred <- df1 %>% group_by(person) %>% dplyr::filter(sum(points, na.rm = T)>126) %>% distinct(person) %>% pull() df1: 我使用了以下代码:
library(tidyverse)
person_filtred <- df1 %>%
group_by(person) %>%
dplyr::filter(sum(points, na.rm = T)>126) %>%
distinct(person) %>%
pull()
df1:
我使用了以下代码:
df1 <- read.csv("df1.csv")
points_to_numeric <- as.numeric(df1$points)
person_filtered <- df1 %>%
group_by(person) %>%
dplyr::filter(sum(points_to_numeric, na.rm = T)>126)%>%
distinct(person) %>%
pull()
df1 126)%
不同(人)%%>%
拉
人名
当我输入这个代码时,结果我得到了800个唯一的人。但如果我想知道有多少人的分数低于126分,我也会得到800个独特的人。所以它看起来不起作用。Tidyverse解决方案。返回包含超过126个点的人员的向量
library(tidyverse)
person_filtred <- df1 %>%
group_by(person) %>%
dplyr::filter(sum(points, na.rm = T)>126) %>%
distinct(person) %>%
pull()
库(tidyverse)
已筛选的人员%
分组单位(人)%>%
dplyr::过滤器(和(点,na.rm=T)>126)%>%
不同(人)%%>%
拉
Tidyverse解决方案。返回包含超过126个点的人员的向量
library(tidyverse)
person_filtred <- df1 %>%
group_by(person) %>%
dplyr::filter(sum(points, na.rm = T)>126) %>%
distinct(person) %>%
pull()
库(tidyverse)
已筛选的人员%
分组单位(人)%>%
dplyr::过滤器(和(点,na.rm=T)>126)%>%
不同(人)%%>%
拉
使用摘要
对于本用例更为惯用
library(tidyverse)
person_filtred <- df1 %>%
group_by(person) %>%
summarise(totalPoints=sum(points, na.rm=TRUE)) %>%
filter(totalPoints >= 126)
库(tidyverse)
已筛选的人员%
分组单位(人)%>%
总结(总分=总和(分,na.rm=真))%>%
过滤器(总点数>=126)
使用摘要
对于本用例更为惯用
library(tidyverse)
person_filtred <- df1 %>%
group_by(person) %>%
summarise(totalPoints=sum(points, na.rm=TRUE)) %>%
filter(totalPoints >= 126)
库(tidyverse)
已筛选的人员%
分组单位(人)%>%
总结(总分=总和(分,na.rm=真))%>%
过滤器(总点数>=126)
也许你可以试试下面的代码
subset(aggregate(.~person,df1,sum), points > 126)
或
也许你可以试试下面的代码
subset(aggregate(.~person,df1,sum), points > 126)
或
我得到了这个错误:错误:
filter()
input.1
有问题。x参数i输入的无效“类型”(字符)。1
为sum(points,na.rm=T)>126
。i错误发生在组1:person=“Try dplyr::filter-有一个stats::filter屏蔽了dplyr函数。我将更新答案以反映。我得到了以下错误:错误:输入filter()
input.1
.x无效的参数类型(字符)。1
是sum(points,na.rm=T)>126
.i错误发生在组1:person=“Try dplyr::filter-有一个stats::filter屏蔽了dplyr函数。我将更新答案以反映。不幸的是,我再次出错。错误:summary()
inputtotalpoints
有问题。x参数i输入的无效“类型”(字符)totalpoints
为sum(points,na.rm=T)
。i第1组中出现错误:person=“看起来您需要将点
强制为带有as.numeric(points)
的数字。我已经这样做了,当我使用class(df1$points)时,我得到了一个分数是数字的答案。请用一个错误更新您的问题。不幸的是,我再次遇到错误。错误:summary()有问题
inputtotalpoints
.x参数的无效“类型”(字符)i inputtotalpoints
issum(points,na.rm=T)
.i组1中出现错误:person=”看起来您需要强制点
为数值,而as.numeric(points)
我已经这样做了,当我使用class(df1$points)时,我得到的答案是分数是数字。请用数字更新你的问题。如果没有数据供我们使用,这是不可复制的。使用dput(head(df1))
生成一个小的测试数据组您的代码不起作用,因为points\u to\u numeric
没有分组,因为它不在df1
对象中,它应该是df1$points如果没有数据供我们使用,这是不可复制的。使用dput(head(df1))
生成一个小的测试数据集您的代码不工作,因为points\u to\u numeric
没有分组,因为它不在df1
对象中,它应该是df1$points