如果小标题由中的多个变量分组dplyr
,是否有办法删除单个分组变量,而不是重新指定没有该变量的组?我以为那会是类似的东西group_by(df, -var, add = TRUE)
,尽管那行不通。
例:
library(dplyr)
# Works
mtcars %>%
# Original groups
group_by(cyl, gear, carb) %>%
# New groups
group_by(cyl, gear) %>%
group_vars()
# [1] "cyl" "gear"
# Doesn't work
mtcars %>%
# Original groups
group_by(cyl, gear, carb) %>%
# New groups
group_by(-carb, add = TRUE) %>%
group_vars()
# [1] "cyl" "gear" "carb" "-carb"
Run Code Online (Sandbox Code Playgroud)
这显然是一个简单的示例-我的实际用例有许多基于用户输入的条件分组,而我想只在函数中的某个位置删除一个分组,而将其余分组保留。
我有一个类似于以下玩具数据的日期框架:
df <- structure(list(year = c(2014, 2014, 2014, 2014, 2014, 2015, 2015,
2015, 2015, 2015, 2016, 2016, 2016, 2016, 2016), date = structure(c(16229,
16236, 16243, 16250, 16257, 16600, 16607, 16614, 16621, 16628,
16964, 16971, 16978, 16985, 16992), class = "Date"), value = c(0.27,
0.37, 0.57, 0.91, 0.2, 0.9, 0.94, 0.66, 0.63, 0.06, 0.21, 0.18,
0.69, 0.38, 0.77)), .Names = c("year", "date", "value"), row.names = c(NA,
-15L), class = c("tbl_df", "tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)
哪些value
是感兴趣的价值,year
并且date
是不言自明的.如果我想value
在不同年份进行视觉比较,那么在不同的年份 …
我有一个数据框,其中的字符变量主要由数值组成,偶尔会有已知的字符串以及一些NA
值.我想有条件地重新格式化数值以具有一个小数位,但保留字符和NA
值.
此代码适用于玩具数据框并生成所需的输出:
df <- data.frame(a = c("1", "2", "3", "none", NA),
stringsAsFactors = FALSE)
test <- df %>%
mutate(a = ifelse(is.na(a) | a == "none",
a,
format(round(as.numeric(a), 1), nsmall = 1)))
test
# a
# 1 1.0
# 2 2.0
# 3 3.0
# 4 none
# 5 <NA>
Run Code Online (Sandbox Code Playgroud)
但是会发出警告信息
Warning message:
In format(round(as.numeric(c("1", "2", "3", "none", NA)), 1), nsmall = 1) :
NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)
我相信b/c format(round(as.numeric(a), 1), nsmall = 1)))
仍然作用于整个向量,即使其中的值仅用于条件为false 的mutate …