在R中,如何使两列成为一个ID,并为每个ID获取一个频率直方图

在R中,如何使两列成为一个ID,并为每个ID获取一个频率直方图,r,statistics,histogram,frequency,R,Statistics,Histogram,Frequency,示例数据集: A 2 1.5 A 2 1.5 B 3 2.0 B 3 2.5 B 3 2.6 C 4 3.2 C 4 3.5 所以在这里我想根据前两列创建3个频率直方图,比如A2、B3和C4?我是R的新手,如果我能将数据整理成这样,我将不胜感激: A 2 1.5 1.5 B 3 2.0 2.5 2.6 etc... 谢谢假设您的数据集名为x,列分别为

示例数据集:

A    2     1.5
A    2     1.5
B    3     2.0
B    3     2.5
B    3     2.6
C    4     3.2
C    4     3.5
所以在这里我想根据前两列创建3个频率直方图,比如A2、B3和C4?我是R的新手,如果我能将数据整理成这样,我将不胜感激:

 A     2     1.5   1.5
 B     3     2.0   2.5  2.6 etc...

谢谢

假设您的数据集名为x,列分别为a、b、c,我认为这个命令应该可以做到这一点

library(lattice)
histogram(~c|a+b,x)

请注意,这需要安装程序包lattice。这里有一个替代解决方案,它基于by function,它只是Jilber建议的tapply的包装。您可能会发现“ex”变量很有用:

set.seed(1)
dat <- data.frame(First = LETTERS[1:3], Second = 1:2, Num = rnorm(60))

# Extract third column per each unique combination of columns 'First' and 'Second'
ex <- by(dat, INDICES = 
    # Create names like A.1, A.2, ...
    apply(dat[,c("First","Second")], MARGIN=1, FUN=function(z) paste(z, collapse=".")), 
    # Extract third column per each unique combination
    FUN=function(x) x[,3]) 

# Draw histograms
par(mfrow=c(3,2))
for(i in 1:length(ex)){
    hist(ex[[i]], main=names(ex)[i], xlim=extendrange(unlist(ex)))
}
set.seed(1)

像这样<代码>不可见(带有(dat、tapply(V3、列表(V1、V2)、hist)))
?不喜欢基于V3的每个v1 v2的频率直方图,因此在最后我有一个频率直方图,其中x轴是存储单元,因此假设对于A2,存储单元从0到1.5,y轴有频率,因此应该在2处有一个条形图,因为在1.5处有两个。是否有特定的方法读取原始数据集以调用由一个变量组成的列,再次抱歉,对R来说非常陌生。谢谢lot@user2344516你可以打电话给他们。或者,您可以使用
grepl
或类似的函数。好吧,我让它工作了,但唯一的问题是我不能让它们全部工作,这是个问题。