在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
或类似的函数。好吧,我让它工作了,但唯一的问题是我不能让它们全部工作,这是个问题。