【发布时间】:2021-06-22 04:20:00
【问题描述】:
好的,我是新来的,但这里是。问题是在某些情况下,总和值不会出现在我的数据表中。 我有一个包含几列的数据集,其中一列名为 Class。在 Class 列中,我有几个类。 - 高级,初级等。数据与竞争对手一起排列,这些竞争对手可以在行中的不同类别下多次出现。这是有效的。下面是一个很小的部分
table_dataCrewstwo <- tribble(
~Name1, ~Year, ~Class, ~Name, ~Time, ~Club, ~Position, ~Trophies, ~BoatType, ~DecimalTime, ~Ladies, ~Military, ~SeniorC, ~JuniorC, ~SinglesC, ~VetJuniorC, ~EndeavourC, ~KayakC, ~CanadianC, ~Folding.BoatC,
"Fie Paul", 1984, "Senior", "Fie Paul & Te C J", "20:17:00", "Terranova Scouts & Wokingham Scouts", 8, "Scouts", "Kayak", 20.2833333333333, "Male", "Civilian", "1", "", "", "", "", "1", "", "",
"Fie Paul", 1985, "Senior", "Fie Paul & Te C J", "19:42:48", "Wokingham Scouts", 11, "Scouts", "Kayak", 19.7133333333333, "Male", "Civilian", "1", "", "", "", "", "1", "", "",
"Fie Paul", 1987, "Singles", "Fie Paul", "18:37:24", "Wokingham Scouts", 10, "", "Kayak", 18.6233333333333, "Male", "Civilian", "", "", "1", "", "", "1", "", "",
"Fie Paul", 1988, "Senior", "Fie Paul & Te C J", "18:51:35", "Wokingham Scouts", 6, "Scouts", "Kayak", 18.8597222222222, "Male", "Civilian", "1", "", "", "", "", "1", "", "",
"Fie Paul", 1990, "Senior", "Dav S M & Fie Paul", "19:27:37", "Worcester", 6, "", "Kayak", 19.4602777777778, "Male", "Civilian", "1", "", "", "", "", "1", "", ""
)
Fie Paul 在几个班级(显示的是高级和单身),这在上面似乎是正确的。但是,当我执行 summerise 时,我得到了
Name1 First_Raced Last_Raced SeniorT JuniorT SinglesT VetJuniorT EndeavourT KayakT CanadianT Folding.BoatT
Fie Paul 1984 2017 13
这正确显示了 Name 1 First_Raced Last_Raced 和 KayakT,但未正确显示 SeniorT SinglesT 和 VetJuniorT(VetJuniorT 未显示在上面的显示中)。
但是,只有 1 个级别的参赛者确实会正确显示。即看来,超过 1 个班级会导致 sum() 消失。 case_when?? mutate?? group_by?? summerise?
这是代码。
data <- table_dataCrewstwo %>%
mutate(
SeniorC = case_when(Class == "Senior" ~ 1),
JuniorC = case_when(Class == "Junior" ~ 1),
SinglesC = case_when(Class == "Singles" ~ 1),
VetJuniorC = case_when(Class == "Vet/Junior" ~ 1),
EndeavourC = case_when(Class == "Endeavour" ~ 1),
KayakC = case_when(BoatType == "Kayak" ~ 1),
CanadianC = case_when(BoatType == "Canadian" ~ 1),
Folding.BoatC = case_when(BoatType == "Folding Boat" ~ 1)
) %>%
group_by(Name1) %>%
summarise(
First_Raced = min(Year),
Last_Raced = max(Year),
SeniorT = sum(SeniorC),
JuniorT = sum(JuniorC),
SinglesT = sum(SinglesC),
VetJuniorT = sum(VetJuniorC),
EndeavourT = sum(EndeavourC),
KayakT = sum(KayakC),
CanadianT = sum(CanadianC),
Folding.BoatT = sum(Folding.BoatC)
)
output <- DT::renderDataTable({
DT::datatable(
data,
options = list(
search = list(
regex = TRUE,
caseInsensitive = FALSE,
smart = FALSE
),
pageLength = 10
),
filter = list(
position = "top",
clear = FALSE
),
rownames = FALSE
)
})
如果我在group_by 和summerise(上图)之间注释掉,它会正确显示,但如果summerise 继续运行,那么如果竞争对手超过 1 个类别,则数据会丢失。以上显示是通过注释掉summerise创建的。
【问题讨论】:
-
感谢您的编辑。看过多个船类型也无法显示。如果列中存在超过 1 个 case_when,则似乎任何 case_when 后跟 summarise 都无法显示。我的假设是我创建了一个新的数据框。