有变量x,,y。z我想过滤掉其中任何一个没有巨大差距的(差距小于5%)。下面的代码可以模拟,但是如果我想要更多的变量进行比较,代码就会很无聊。有什么聪明的方法吗?谢谢!
library(tidyverse)
diamonds %>%
select(x, y, z) %>%
filter(abs((x - y)/ max(x, y)) < 0.05,
abs((x - z)/ max(x, z)) < 0.05,
abs((y - z)/ max(y, z)) < 0.05)
Run Code Online (Sandbox Code Playgroud) 有一个数据框作为打击(带有 NA 值)
md <- data.frame(cat=c('a','b','d',NA,'E',NA),
subcat=c('A','C',NA,NA,NA,'D'))
cat subcat
1 a A
2 b C
3 d <NA>
4 <NA> <NA>
5 E <NA>
6 <NA> D
Run Code Online (Sandbox Code Playgroud)
我想用前一个字符替换 NA,结果如下。
使用像 'for ...' 这样的循环语句可以做到,但效率不高。有什么公式或包可以做到吗?谢谢!
cat subcat
1 a A
2 b C
3 d C
4 d C
5 E C
6 E D
Run Code Online (Sandbox Code Playgroud) 在ggplot2中,如何在饼图中间添加一个白洞?当前图(左图)请参阅下面的代码。谢谢!
library(tidyverse)
pie_data <- data.frame(category=c('A','B','C','A','B','C'),
year=c(2020,2020,2020,2021,2021,2021),
sales=c(40,30,20,10,15,10))
pie_data %>% ggplot(aes(x=factor(year),y=sales,fill=category))+
geom_col(position='fill',width=1,color='white')+
coord_polar(theta = 'y')+
theme_void()
Run Code Online (Sandbox Code Playgroud)
在readr()/read_csv中,如何导入所有列作为字符的数据?谢谢!
library(tidyverse)
read_csv(readr_example("mtcars.csv")))
Run Code Online (Sandbox Code Playgroud) IR,如何自动汇总数字列。谢谢
library(tidyverse)
df <- tibble(label=LETTERS[1:8],
x = rep(2:5, each = 2) / 2,
y = rep(2:3, each = 4) / 2)
df %>% sum(across(where(is.numeric))) #can't work
df %>% sum(where(is.numeric)) #can't work
Run Code Online (Sandbox Code Playgroud) 我想检索每组的“倒数第二个”数据。目前,代码如下,使用“group_modify”两次。有没有可用的功能?(如何简单地使用当前代码)?谢谢!
所希望的结果在附图中的红色矩形中。
library(dplyr)
test_data <- data.frame(category=c("a","a","c","a","b","c","a","b","c"),
value=c(1.72,0.32,0.22,1.29,-0.49,0.61,1.24,0.58,0.26))
test_data %>% arrange(category ) %>%
group_by(category) %>%
group_modify(~tail(.x,2)) %>%
group_modify(~head(.x,1))
Run Code Online (Sandbox Code Playgroud)
下面的数据框中有sku名称,我想删除以“V”开头并以“b”结尾的部分,我的代码 str_remove_all(sku_name,"^(V).*?(\\b)$")无法工作。
有人可以帮忙吗?
mydata <- data.frame(sku_name=c('wk0001 V1b','123780 PRO V326b','ttttt V321b'))
mydata %>% mutate(sku_name_new=str_remove_all(sku_name,"^(V).*?(\\b)$"))
Run Code Online (Sandbox Code Playgroud) 下面的代码可以将圆环图绘制为附图中的左侧图表,如何将标签更改为右侧图表?谢谢!
library(tidyverse)
pie_data <- data.frame(category=c('A','B','C'),sales=c(70,25,40))
pie_data %>% ggplot(aes(x=1,y=sales,fill=category))+
geom_col()+
scale_fill_brewer(direction = -1)+
geom_text(position=position_stack(vjust=0.5),aes(label=paste0('Category ',category,':',sales)))+
xlim(-1,2)+
coord_polar(theta = 'y')+
theme_void()
Run Code Online (Sandbox Code Playgroud)
在 ggplot2/stat_summary 中,如何将median值作为标签添加到绘图中?谢谢!
library(ggplot2)
d <- ggplot(mtcars, aes(cyl, mpg)) + geom_point()
d + stat_summary(fun = "median", colour = "red", size = 2, geom = "point")
Run Code Online (Sandbox Code Playgroud) 有列表ori_list,如何组合子数据框cat_a|cat_btocat和item_a|item_bto item?(结果与 new_list 相同)
cat_a <- data.frame(name=c('A','B','C'),amount=c(1,2,3))
cat_b <- data.frame(name=c('w','B','C'),amount=c(4,2,3))
item_a <- data.frame(name=c('z','o','C'),amount=c(3,4,1))
item_b <- data.frame(name=c('n','B','C'),amount=c(6,6,3))
files <- ls(pattern = 'cat|item') %>% purrr::set_names()
ori_list <- list(mget(files))
new_list <- list(cat= data.frame(name = c('A','B','C','w','B','C'),
amount = c(1,2,3,4,2,3)),
item = data.frame(name=c('z','o','C','n','B','C'),
amount=c(3,4,1,6,6,3)))
Run Code Online (Sandbox Code Playgroud) 在ggplot2中,我想让bar_plot与x轴对齐(删除附图所示的空白区域)。使用时expand_limits(y=0),似乎无法工作。有人可以帮忙吗?谢谢!
library(tidyverse)
library(RColorBrewer)
data <- data.frame(category=c("a","b","c","d"),value=4:1)
data %>% ggplot(aes(category,value,fill=category))+
geom_bar(stat='identity')+scale_fill_brewer(palette='Greens',direction=-1)+
expand_limits(y=0)
Run Code Online (Sandbox Code Playgroud)