首页 > 解决方案 > R:从两列创建整数数组,然后绘制直方图

问题描述

我有一个包含 2 个数字列的数据框。对于每一行,我想创建一个整数数组,该数组位于列中的值之间,并且包括列中的值。然后,我想将所有值编译到单个列中以生成直方图。

输入:

df
    C1    C2
A   3   -92
B   8   -162
C   20  -97
D   50  -76

输出:

sdf5$Values
-92
-91
-90
...
2
3
-162
-161
...
7
8
...

我的实际数据框有 62 行。我当前的代码给了我 > 100 的频率(对于任何整数,最多应该有 62)。该代码在一个虚拟数据帧上工作,所以我不确定哪里出了问题。

list <- mapply(":", df$C2, df$C1)
df3 <- do.call(rbind.data.frame, list)
sdf3 <- stack(df3)
sdf4 <- as.data.frame(sdf3$values)
sdf5 <- rename(sdf4, Values = 1)

a <- ggplot(sdf5, aes(x=Values)) +
  geom_histogram(binwidth = 1, center=0)

标签: rggplot2dplyr

解决方案


我不确定到底出了什么问题,但我认为这rbind.data.frame会导致列表输入出现一些问题。作为备选:

library(ggplot2)

df <- read.table(text = "    C1    C2
A   3   -92
B   8   -162
C   20  -97
D   50  -76")

list <- mapply(":", df$C2, df$C1)
df2 <- data.frame(Values = do.call(c, list))

ggplot(df2, aes(x=Values)) +
  geom_histogram(binwidth = 1, center=0)

reprex 包于 2021-02-08 创建(v1.0.0)


推荐阅读