R:将 "tidyr/tidyverse" 语句转换为 "dplyr" 和 "reshape2"
R: Converting "tidyr/tidyverse" statements to "dplyr" and "reshape2"
我正在使用 R 编程语言。在之前的 post () 中,我学习了如何为数据集中的所有分类变量制作自动直方图:
#create data
var_1 <- rnorm(1000,10,10)
var_2 <- rnorm(1000, 5, 5)
var_3 <- rnorm(1000, 6,18)
favorite_food <- c("pizza","ice cream", "sushi", "carrots", "onions", "broccoli", "spinach", "artichoke", "lima beans", "asparagus", "eggplant", "lettuce", "cucumbers")
favorite_food <- sample(favorite_food, 1000, replace=TRUE, prob=c(0.5, 0.45, 0.04, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001))
response <- c("a","b")
response <- sample(response, 1000, replace=TRUE, prob=c(0.3, 0.7))
data = data.frame( var_1, var_2, var_3, favorite_food, response)
data$favorite_food = as.factor(data$favorite_food)
data$response = as.factor(data$response)
#specify categorical variables
factor_vars <- sapply(data, is.factor)
varnames <- names(data)
deselect_not_factors <- varnames[!factor_vars]
#load libraries
library(tidyr)
library(ggplot2)
#format data
data_long <- data %>%
pivot_longer(
cols = -deselect_not_factors,
names_to = "category",
values_to = "value"
)
#create plots
ggplot(data_long) +
geom_bar(
aes(x = value)
) +
facet_wrap(~category, scales = "free")
我的问题:是否可以使用“dplyr”和“reshape2”库中的函数(例如“melt()”)替换“pivot_longer”语句?
谢谢
与reshape2::melt
一起指定id.vars
中的id列,即deselect_not_factors
,names_to
和values_to
对应的参数是variable.name
和 value.name
library(dplyr)
library(ggplot2)
data %>%
reshape2::melt(id.vars = deselect_not_factors,
variable.name = 'category', value.name = 'value') %>%
ggplot() +
geom_bar(
aes(x = value)
) +
facet_wrap(~category, scales = "free")
我正在使用 R 编程语言。在之前的 post (
#create data
var_1 <- rnorm(1000,10,10)
var_2 <- rnorm(1000, 5, 5)
var_3 <- rnorm(1000, 6,18)
favorite_food <- c("pizza","ice cream", "sushi", "carrots", "onions", "broccoli", "spinach", "artichoke", "lima beans", "asparagus", "eggplant", "lettuce", "cucumbers")
favorite_food <- sample(favorite_food, 1000, replace=TRUE, prob=c(0.5, 0.45, 0.04, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001))
response <- c("a","b")
response <- sample(response, 1000, replace=TRUE, prob=c(0.3, 0.7))
data = data.frame( var_1, var_2, var_3, favorite_food, response)
data$favorite_food = as.factor(data$favorite_food)
data$response = as.factor(data$response)
#specify categorical variables
factor_vars <- sapply(data, is.factor)
varnames <- names(data)
deselect_not_factors <- varnames[!factor_vars]
#load libraries
library(tidyr)
library(ggplot2)
#format data
data_long <- data %>%
pivot_longer(
cols = -deselect_not_factors,
names_to = "category",
values_to = "value"
)
#create plots
ggplot(data_long) +
geom_bar(
aes(x = value)
) +
facet_wrap(~category, scales = "free")
我的问题:是否可以使用“dplyr”和“reshape2”库中的函数(例如“melt()”)替换“pivot_longer”语句?
谢谢
与reshape2::melt
一起指定id.vars
中的id列,即deselect_not_factors
,names_to
和values_to
对应的参数是variable.name
和 value.name
library(dplyr)
library(ggplot2)
data %>%
reshape2::melt(id.vars = deselect_not_factors,
variable.name = 'category', value.name = 'value') %>%
ggplot() +
geom_bar(
aes(x = value)
) +
facet_wrap(~category, scales = "free")