R 如何将字符转换为数值并基于分类列对其进行平均?
以下是示例数据:R 如何将字符转换为数值并基于分类列对其进行平均?,r,dplyr,R,Dplyr,以下是示例数据: project = c("ProjA", "ProjA", "ProjB", "ProjB","ProjC", "ProjC") Q1 = c("Unlikely", "Very likely", "Likely","Unlikely", "Very likely&quo
project = c("ProjA", "ProjA", "ProjB", "ProjB","ProjC", "ProjC")
Q1 = c("Unlikely", "Very likely", "Likely","Unlikely", "Very likely", "Likely" )
Q2 = c("Very easy", "Easy", "Difficult", "Neutral","Very easy", "Easy")
masterdf = data.frame(project, Q1,Q2)
我的目标是将第一季度和第二季度转化为百分比,然后根据他们所参与的项目对其进行平均。这样,我们可以在每个问题中找到每个项目的平均性能
我试过的是:
value = c("Likely", "Very likely")
Q1 = masterdf %>% count(Q1) %>% arrange(desc(n))
Q1 = Q1 %>% mutate(pct = Q1$n/sum(Q1$n) *100) %>%
filter(Q1 %in% value)
但它不起作用,而且它与它所属的项目没有关系。这些值位于前两个框中,因此很可能、很可能、很容易和很容易成功。理想情况下,我想要的是这样一张桌子:
项目
Q1
问题2
普罗贾
50%
47%
项目
50%
47%
项目
50%
47%
给予
#一个tible:3 x 3
项目Q1和Q2
1 ProjA 0 50
2项目50 0
3项目50
使用数据的一些优点是,代码对于项目的数量和标签以及问题和回答的数量的变化是健壮的。它也更适合tidyverse动词,因为它们是为整洁的数据而设计的
masterdf %>%
# Make a tidy dataset
pivot_longer(
cols=starts_with("Q"),
names_to="Question",
values_to="Answer"
) %>%
# Convert from categorical to binary
mutate(Success=Answer %in% c("Very Likely", "Likely", "Easy", "Very Easy")) %>%
# Calculate success rates by project and question
group_by(project, Question) %>%
summarise(Rate=100*sum(Success)/n(), .groups="drop") %>%
# Transpose for pressentation
pivot_wider(
names_from=Question,
values_from=Rate
)
# A tibble: 3 x 3
project Q1 Q2
<fct> <dbl> <dbl>
1 ProjA 0 50
2 ProjB 50 0
3 ProjC 50 50