在过去的一周里,我一直在试图自学,但我已经被一个饼图问题困扰了两天,我似乎无法理解它。
我有一个有几列的表。我想用其中的两个来创建一个饼图。第一个称为"Rabatt“,第二个称为"Gewinnspiel”,现在它们都可以be0表示False或1表示True,但这两行都不能在两列中都有True。所以组合可以是00,10或者01。现在我想要一个饼图,显示00、10或01的百分比。但我如何告诉R,当它们包含值1时,只显示两行中的百分比(因为当它们包含值0时,它们都是假的,并且不相关,直到它们都是假的),将这两行相加,然后还显示这两种情况的百分比?
我希望我的解释是可以理解的。
下面是数据的一部分(总共超过100行)。
Rabatt Gewinnspiel
0 0
0 0
0 0
1 0
1 0
1 0
0 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
0 1
0 1
1 0
1 0
0 0发布于 2018-01-31 14:31:56
下面是如何使用包dplyr和table函数完成此操作的示例
您的数据
df = read.table(header = T, stringsAsFactors = F, text = "Rabatt Gewinnspiel
0 0
0 0
0 0
1 0
1 0
1 0
0 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
0 1
0 1
1 0
1 0
0 0")通过连接Rabatt和Gewinnspiel创建名为ny_var的新变量
df <- df %>% mutate(ny_var = paste(Rabatt, Gewinnspiel, sep = ""))您可以将新变量绘制为饼图
pie(table(df$ny_var))您可以查看您的汇总数据
table(df$ny_var)发布于 2018-01-31 14:57:50
如果你不想在这个任务中使用额外的包,并且标签中也有你的%-numbers,试试这个( df是你的数据框):
df <- read.table(text = "Rabatt Gewinnspiel
0 0
0 0
0 0
1 0
1 0
1 0
0 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
0 1
0 1
1 0
1 0
0 0", header = TRUE)
pie_tbl <- table(with(df, paste0(Rabatt, Gewinnspiel)))
pie(x = pie_tbl, labels = paste0(names(pie_tbl), ": ", round(pie_tbl/sum(pie_tbl)*100), "%"))发布于 2018-01-31 14:57:50
以下是一种方法:
#data
df <- read.table(text = "Rabatt Gewinnspiel
0 0
0 0
0 0
1 0
1 0
1 0
0 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
0 1
0 1
1 0
1 0
0 0", header = T, stringsAsFactors = F)
#Create a factor based on combination
df$Data <- as.factor(paste(df$Rabatt, df$Gewinnspiel, sep = ""))
library(dplyr)
#Calculate number of occurrence for each combination using summarise
df_mod <- df %>%
group_by(Data) %>%
summarise(Count = n())
#Draw pie
pie(df_mod$Count, df_mod$Data)

https://stackoverflow.com/questions/48535779
复制相似问题