![](/img/trans.png)
[英]why do I get an error when I try to limit my y-axis with ylim function in r
[英]Why do I get an error message when I try to obtain a count by 2 variables in R?
我正在尝试按 2 个变量进行频率计数。 这是我的数据,在数据框“api”中:
Name Grade
1 John Smith C
2 John Smith B
3 John Smith C
4 Jane Doe A
5 Jane Doe C
6 Lisa Brown B
我要这个:
Name Grade Freq
1 John Smith C 2
2 John Smith B 1
3 John Smith C 2
4 Jane Doe A 1
5 Jane Doe C 1
6 Lisa Brown B 1
这是我的代码:
api_count<-count(api, c("Name", "Grade")
我收到此错误消息:
Error: Problem with `mutate()` input `..1`.
x Input `..1` can't be recycled to size 28328.
i Input `..1` is `c("Name", "Grade")`.
i Input `..1` must be size 28328 or 1, not 2.
我会建议这种tidyverse
方法:
library(tidyverse)
#Code
df %>% group_by(Name,Grade) %>% mutate(N=n())
输出:
# A tibble: 6 x 3
# Groups: Name, Grade [5]
Name Grade N
<chr> <chr> <int>
1 John Smith C 2
2 John Smith B 1
3 John Smith C 2
4 Jane Doe A 1
5 Jane Doe C 1
6 Lisa Brown B 1
使用的一些数据:
#Data
df <- structure(list(Name = c("John Smith", "John Smith", "John Smith",
"Jane Doe", "Jane Doe", "Lisa Brown"), Grade = c("C", "B", "C",
"A", "C", "B")), class = "data.frame", row.names = c(NA, -6L))
我认为你的代码大部分是正确的,只有一些小的语法问题:
api <- data.frame(Name = c(rep("John Smith",3), rep("Jane Doe", 2), "Lisa Brown"), Grade = c("C", "B", "C", "A", "C","B")))
api
Name Grade
1 John Smith C
2 John Smith B
3 John Smith C
4 Jane Doe A
5 Jane Doe C
6 Lisa Brown B
count(api, c("Name", "Grade"))
Name Grade freq
1 Jane Doe A 1
2 Jane Doe C 1
3 John Smith B 1
4 John Smith C 2
5 Lisa Brown B 1
我觉得@鸭是最直接的方法(和首选;而与此数据,计算时间的一半),但这里的情况下,它更有意义的选择: count
,然后join
回来的原始数据:
df %>%
count(Name, Grade) %>%
left_join(df, ., by = c("Name", "Grade"))
# Name Grade n
# 1 John Smith C 2
# 2 John Smith B 1
# 3 John Smith C 2
# 4 Jane Doe A 1
# 5 Jane Doe C 1
# 6 Lisa Brown B 1
我们可以使用add_count
library(dplyr)
df %>%
add_count(Name, Grade)
# Name Grade n
#1 John Smith C 2
#2 John Smith B 1
#3 John Smith C 2
#4 Jane Doe A 1
#5 Jane Doe C 1
#6 Lisa Brown B 1
df <- structure(list(Name = c("John Smith", "John Smith", "John Smith",
"Jane Doe", "Jane Doe", "Lisa Brown"), Grade = c("C", "B", "C",
"A", "C", "B")), class = "data.frame", row.names = c(NA, -6L))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.