Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 带有“value';列和`事件数';柱_R - Fatal编程技术网

R 带有“value';列和`事件数';柱

R 带有“value';列和`事件数';柱,r,R,我有一张桌子,看起来像 value(0 < v< 1), # of events --------------- ----------- 0.1, 1000 0.5, 20000 0.7, 3000000 0.1, 400000000 0.5, 50000000000 0.9, 6000000000000 ...,

我有一张桌子,看起来像

value(0 < v< 1),  # of events
---------------   -----------
0.1,              1000
0.5,              20000
0.7,              3000000
0.1,              400000000
0.5,              50000000000
0.9,              6000000000000
...,              ...
当我尝试将某些函数(例如
plot()
)应用于此表时,R不标识具有相同值的行,而是单独处理它们。如果我们有下表,用这种表做统计的好方法是什么

value,  # of events
0.1,    400001000
0.5,    ...

作为第一步,下面介绍如何将第一个表转换为第二个表

构造数据:

dd <- setNames(as.data.frame(matrix(c(0.1,1000,
                                      0.5,20000,
                                      0.7,3000000,
                                      0.1,400000000,
                                      0.5,50000000000,
                                      0.9,6000000000000),
                                    ncol=2,byrow=TRUE)),
                             c("value","count"))
然后使用
melt
将数据转换为(可能)更有用的格式:

library(reshape2)
(dd3 <- melt(dd2,varnames="value",value.name="count"))
##   value        count
## 1   0.1 4.000010e+08
## 2   0.5 5.000002e+10
## 3   0.7 3.000000e+06
## 4   0.9 6.000000e+12
library(重塑2)

(dd3您的问题有点不清楚,但我认为您只想通过每个唯一值对事件进行求和?如果是这样的话,这个问题和相关问题有很多答案。以下是一种方法:

#fake data
set.seed(1)
x <- data.frame(value = 1:3, events = sample(1:10, 9, TRUE))

#Option 1

 aggregate(events ~ ., data = x, FUN = "sum")
  value events
1     1     23
2     2     14
3     3     22

#Option 2
> tapply(x$events, x$value, FUN = "sum")
 1  2  3 
23 14 22 

#Option 3
> library(plyr)
> ddply(x, "value", summarize, sum = sum(events))
  value sum
1     1  23
2     2  14
3     3  22

#Option 4
> library(data.table)
> x <- data.table(x)
> x[, sum(events), by = value]
     value V1
[1,]     1 23
[2,]     2 14
[3,]     3 22
#伪造数据
种子(1)
x tapply(x$events,x$value,FUN=“sum”)
1  2  3 
23 14 22 
#选择3
>图书馆(plyr)
>ddply(x,“值”,总结,总结=总结(事件))
价值总和
1     1  23
2     2  14
3     3  22
#选择4
>库(数据表)
>x x[,总和(事件),由=值]
值V1
[1,]     1 23
[2,]     2 14
[3,]     3 22

随着数据的增长,这些解决方案(和其他解决方案)的规模也会有所不同。如果您想要加权平均值,我给出了一个比较时间和方法的相当全面的答案:

 weighted.mean(dd$value, dd$count)
[1] 0.8966414
加权中值:(Hmisc中还有其他几个“加权”函数)

要打印,只需使用
barplot

 barplot(dd$count)  #perhaps with log="y"
 barplot(dd$count, log="y")

抱歉说得太模糊了。我想知道如何在这个表中应用基本函数,如均值或中位数,以了解如何处理R中的数据。正如您已经注意到的,我对R是新手,但我必须尽快了解这一点:-)使用各种选项的答案-这真的很有帮助。谢谢!
 weighted.mean(dd$value, dd$count)
[1] 0.8966414
 library(Hmisc)
 wtd.quantile(dd$value, dd$count, .5)
#50% 
#0.9 
 barplot(dd$count)  #perhaps with log="y"
 barplot(dd$count, log="y")