City<-c("Toronto", "Toronto", "Montreal","Ottawa","Montreal",
"Hamilton","Peterborough","Toronto","Hamilton","Montreal")
Client<-c("Cl1","Cl2","Cl3","Cl4","Cl5","Cl6","Cl7","Cl8","Cl9","Cl10")
PostInjury<-c("0-1","6-10","0-1","2-5","6-10","0-1","11-15","0-1","0-1","6-10")
DF<- data.frame(City,Client,PostInjury)
您可以使用嵌套的ifelse
。使用DPLYR
:
DF <- DF %>%
mutate(new_column = if_else(City == "Toronto" & PostInjury == "0-1", 1,
if_else(City == "Montreal" & PostInjury == "6-10", 2, 3)))
使用case_when
:
DF <- DF %>% mutate(new_column =
case_when(
City == "Toronto" & PostInjury == "0-1" ~ 1,
City == "Montreal" & PostInjury == "6-10" ~ 2,
TRUE ~ 3
)
)
或使用base
函数:
DF$new_column <- ifelse(DF$City == "Toronto" & DF$PostInjury == "0-1", 1,
ifelse(DF$City == "Montreal" & DF$PostInjury == "6-10", 2, 3))
DF$new_column <- sapply(as.character(interaction(DF$City, DF$PostInjury)),
switch,
"Toronto.0-1" = 1,
"Montreal.6-10" = 2,
3)
使用下面的示例代码,我想使用“mutate”或“mutate_at”将多个列重新编码为基于另一列的值的新列。基本上,我想基于相应的非“S”变量的值,重新编码以“S”结尾的变量(q25s,q26s等..)。例如,如果q25=1,那么q25s将被重新编码,使得1=0,2=0,3=0,4=1,5=1和88=缺失,并且新名称将是q25_new。如果q25不等于1,则不应重新编码is,而q25_new应仅为
我正在为一个大的数据集创建条件平均值,这个数据集包含了几年来一周内看到的流感病例数。数据是这样组织的: 我想做的是创建一个新的列,列出往年同一周的平均病例数。例如,对于Week所在的行。数字是1和流感。今年是2017年,我希望新行给出任何一年的平均计数。数字==1 但是,由于有四年的数据* 52周,因此需要大量迭代才能阐明条件。有没有办法在dplyr中优雅地编码它?我经常遇到的问题是,我想根据周.
我试图在一个数据集中的多个主题上求和多个变量。我知道如何使用plyr包来实现这一点;然而,由于数据集的长度,变量的数量,以及我试图做的不同滚动和的数量(2天,3天,4天等)。我想知道是否有人有更多的时间,更有效的方式来完成这项任务在DPLYR。 我的数据与此类似: 谢谢你。
我有一个带有两个得分列的data.frame。我希望在每行的基础上有条件地使用其中一个的数据。我用下面的一个例子来解释... 在这种情况下,Final最终将与test_low相同,因为对于两个Mains(即,当单元格为'high'时,单元格为'low时),test_low列小于test_high列。
我试图计算许多列的行平均值。有人能解释一下为什么下面的代码只计算代码中两个变量(var_1和var_13)的平均值,而不是所有13列的平均值吗?
我已经更新了dplyr(现在是0.7.1),我的很多旧代码都不能用了,因为mutate_each已经被弃用了。我曾经用mutate_each做类似这样的事情(代码如下),使用列索引。我会在数百个专栏中这样做。而我就是搞不清楚如何用mutate_at正确使用vars参数。我看到的所有例子都使用了列名...我不想这么做。我确信这是一个简单的答案,但是我已经花了太多的时间试图弄明白它,并且将非常感谢一些