Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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中装箱值_R_Text Files_Binning - Fatal编程技术网

使用多个文件在R中装箱值

使用多个文件在R中装箱值,r,text-files,binning,R,Text Files,Binning,因此,我在将多个文本文件中包含的值组合到设置的范围时遇到了一个小问题。我在网上查看了各种软件包,发现sm可以指定bin值,您也可以指定bin范围,如下所示:- xb <- binning(x, breaks=seq(-4,4,by=0.5)) xb有几种方法,我将提供一种使用基函数的方法。(另一种选择是使用dplyr,这也非常适合。不过,基本示例应该足够简单。) 生成数据 (这只是因为我们没有您的任何数据。) 每个垃圾箱的统计数据 在这一领域,许多其他选择可能是有利的。例如,基本函数by

因此,我在将多个文本文件中包含的值组合到设置的范围时遇到了一个小问题。我在网上查看了各种软件包,发现sm可以指定bin值,您也可以指定bin范围,如下所示:-

xb <- binning(x, breaks=seq(-4,4,by=0.5))

xb有几种方法,我将提供一种使用基函数的方法。(另一种选择是使用
dplyr
,这也非常适合。不过,基本示例应该足够简单。)

生成数据 (这只是因为我们没有您的任何数据。)

每个垃圾箱的统计数据 在这一领域,许多其他选择可能是有利的。例如,基本函数
by
可以工作,尽管处理其数据结构并不总是直观的,即使函数调用本身很容易阅读:

head(by(df$x, df$bin, median, na.rm = TRUE))
## df$bin
##   (0,0.05] (0.05,0.1] (0.1,0.15] (0.15,0.2] (0.2,0.25] (0.25,0.3] 
## 0.03802277         NA 0.11528715 0.18195392 0.22918094 0.27132242 
您还可以轻松地使用
dplyr
。本例从原始的
allData
allbin
开始:

library(dplyr)
data.frame(x = allData) %>%
    mutate(bin = cut(x, breaks = allBins)) %>%
    group_by(bin) %>%
    summarise(median(x))
## Source: local data frame [17 x 2]
##           bin  median(x)
## 1    (0,0.05] 0.03802277
## 2  (0.1,0.15] 0.11528715
## 3  (0.15,0.2] 0.18195392
## 4  (0.2,0.25] 0.22918094
## 5  (0.25,0.3] 0.27132242
#### ..snip..
第一个示例保留空箱子,而其他方法不知道空箱子。可能还有其他使用
by
dplyr
的方法,包括这些空箱子,但这似乎就足够了

编辑 经过一段时间的聊天,确定数据范围太宽,存储箱宽度为0.0005。设计了一个更好的解决方案。(没有提供样本数据,对不起,不是我提供的…)我将使用随机数据模拟过程:

set.seed(42)
x <- 5e7 * runif(5e5)

library(dplyr)
binSize <- 0.0005
df <- data.frame(dat = sort(x))
df$bin <- floor(df$dat / binSize) * binSize
head(df)
##         dat       bin
## 1  410.9577  410.9575
## 2  456.6275  456.6270
## 3  552.3674  552.3670
## 4  875.4898  875.4895
## 5 1018.6806 1018.6805
## 6 1102.2436 1102.2435
system.time(results <- df %>% group_by(bin) %>% summarize(med = median(dat)))
##    user  system elapsed 
##   12.08    0.00   12.11 
head(results)
## Source: local data frame [6 x 2]
##         bin       med
## 1  410.9575  410.9577
## 2  456.6270  456.6275
## 3  552.3670  552.3674
## 4  875.4895  875.4898
## 5 1018.6805 1018.6806
## 6 1102.2435 1102.2436
set.seed(42)

有几种方法,我将提供一种使用基函数的方法。(另一种选择是使用
dplyr
,这也非常适合。不过,基本示例应该足够简单。)

生成数据 (这只是因为我们没有您的任何数据。)

每个垃圾箱的统计数据 在这一领域,许多其他选择可能是有利的。例如,基本函数
by
可以工作,尽管处理其数据结构并不总是直观的,即使函数调用本身很容易阅读:

head(by(df$x, df$bin, median, na.rm = TRUE))
## df$bin
##   (0,0.05] (0.05,0.1] (0.1,0.15] (0.15,0.2] (0.2,0.25] (0.25,0.3] 
## 0.03802277         NA 0.11528715 0.18195392 0.22918094 0.27132242 
您还可以轻松地使用
dplyr
。本例从原始的
allData
allbin
开始:

library(dplyr)
data.frame(x = allData) %>%
    mutate(bin = cut(x, breaks = allBins)) %>%
    group_by(bin) %>%
    summarise(median(x))
## Source: local data frame [17 x 2]
##           bin  median(x)
## 1    (0,0.05] 0.03802277
## 2  (0.1,0.15] 0.11528715
## 3  (0.15,0.2] 0.18195392
## 4  (0.2,0.25] 0.22918094
## 5  (0.25,0.3] 0.27132242
#### ..snip..
第一个示例保留空箱子,而其他方法不知道空箱子。可能还有其他使用
by
dplyr
的方法,包括这些空箱子,但这似乎就足够了

编辑 经过一段时间的聊天,确定数据范围太宽,存储箱宽度为0.0005。设计了一个更好的解决方案。(没有提供样本数据,对不起,不是我提供的…)我将使用随机数据模拟过程:

set.seed(42)
x <- 5e7 * runif(5e5)

library(dplyr)
binSize <- 0.0005
df <- data.frame(dat = sort(x))
df$bin <- floor(df$dat / binSize) * binSize
head(df)
##         dat       bin
## 1  410.9577  410.9575
## 2  456.6275  456.6270
## 3  552.3674  552.3670
## 4  875.4898  875.4895
## 5 1018.6806 1018.6805
## 6 1102.2436 1102.2435
system.time(results <- df %>% group_by(bin) %>% summarize(med = median(dat)))
##    user  system elapsed 
##   12.08    0.00   12.11 
head(results)
## Source: local data frame [6 x 2]
##         bin       med
## 1  410.9575  410.9577
## 2  456.6270  456.6275
## 3  552.3670  552.3674
## 4  875.4895  875.4898
## 5 1018.6805 1018.6806
## 6 1102.2435 1102.2436
set.seed(42)

有几种方法,我将提供一种使用基函数的方法。(另一种选择是使用
dplyr
,这也非常适合。不过,基本示例应该足够简单。)

生成数据 (这只是因为我们没有您的任何数据。)

每个垃圾箱的统计数据 在这一领域,许多其他选择可能是有利的。例如,基本函数
by
可以工作,尽管处理其数据结构并不总是直观的,即使函数调用本身很容易阅读:

head(by(df$x, df$bin, median, na.rm = TRUE))
## df$bin
##   (0,0.05] (0.05,0.1] (0.1,0.15] (0.15,0.2] (0.2,0.25] (0.25,0.3] 
## 0.03802277         NA 0.11528715 0.18195392 0.22918094 0.27132242 
您还可以轻松地使用
dplyr
。本例从原始的
allData
allbin
开始:

library(dplyr)
data.frame(x = allData) %>%
    mutate(bin = cut(x, breaks = allBins)) %>%
    group_by(bin) %>%
    summarise(median(x))
## Source: local data frame [17 x 2]
##           bin  median(x)
## 1    (0,0.05] 0.03802277
## 2  (0.1,0.15] 0.11528715
## 3  (0.15,0.2] 0.18195392
## 4  (0.2,0.25] 0.22918094
## 5  (0.25,0.3] 0.27132242
#### ..snip..
第一个示例保留空箱子,而其他方法不知道空箱子。可能还有其他使用
by
dplyr
的方法,包括这些空箱子,但这似乎就足够了

编辑 经过一段时间的聊天,确定数据范围太宽,存储箱宽度为0.0005。设计了一个更好的解决方案。(没有提供样本数据,对不起,不是我提供的…)我将使用随机数据模拟过程:

set.seed(42)
x <- 5e7 * runif(5e5)

library(dplyr)
binSize <- 0.0005
df <- data.frame(dat = sort(x))
df$bin <- floor(df$dat / binSize) * binSize
head(df)
##         dat       bin
## 1  410.9577  410.9575
## 2  456.6275  456.6270
## 3  552.3674  552.3670
## 4  875.4898  875.4895
## 5 1018.6806 1018.6805
## 6 1102.2436 1102.2435
system.time(results <- df %>% group_by(bin) %>% summarize(med = median(dat)))
##    user  system elapsed 
##   12.08    0.00   12.11 
head(results)
## Source: local data frame [6 x 2]
##         bin       med
## 1  410.9575  410.9577
## 2  456.6270  456.6275
## 3  552.3670  552.3674
## 4  875.4895  875.4898
## 5 1018.6805 1018.6806
## 6 1102.2435 1102.2436
set.seed(42)

有几种方法,我将提供一种使用基函数的方法。(另一种选择是使用
dplyr
,这也非常适合。不过,基本示例应该足够简单。)

生成数据 (这只是因为我们没有您的任何数据。)

每个垃圾箱的统计数据 在这一领域,许多其他选择可能是有利的。例如,基本函数
by
可以工作,尽管处理其数据结构并不总是直观的,即使函数调用本身很容易阅读:

head(by(df$x, df$bin, median, na.rm = TRUE))
## df$bin
##   (0,0.05] (0.05,0.1] (0.1,0.15] (0.15,0.2] (0.2,0.25] (0.25,0.3] 
## 0.03802277         NA 0.11528715 0.18195392 0.22918094 0.27132242 
您还可以轻松地使用
dplyr
。本例从原始的
allData
allbin
开始:

library(dplyr)
data.frame(x = allData) %>%
    mutate(bin = cut(x, breaks = allBins)) %>%
    group_by(bin) %>%
    summarise(median(x))
## Source: local data frame [17 x 2]
##           bin  median(x)
## 1    (0,0.05] 0.03802277
## 2  (0.1,0.15] 0.11528715
## 3  (0.15,0.2] 0.18195392
## 4  (0.2,0.25] 0.22918094
## 5  (0.25,0.3] 0.27132242
#### ..snip..
第一个示例保留空箱子,而其他方法不知道空箱子。可能还有其他使用
by
dplyr
的方法,包括这些空箱子,但这似乎就足够了

编辑 经过一段时间的聊天,确定数据范围太宽,存储箱宽度为0.0005。设计了一个更好的解决方案。(没有提供样本数据,对不起,不是我提供的…)我将使用随机数据模拟过程:

set.seed(42)
x <- 5e7 * runif(5e5)

library(dplyr)
binSize <- 0.0005
df <- data.frame(dat = sort(x))
df$bin <- floor(df$dat / binSize) * binSize
head(df)
##         dat       bin
## 1  410.9577  410.9575
## 2  456.6275  456.6270
## 3  552.3674  552.3670
## 4  875.4898  875.4895
## 5 1018.6806 1018.6805
## 6 1102.2436 1102.2435
system.time(results <- df %>% group_by(bin) %>% summarize(med = median(dat)))
##    user  system elapsed 
##   12.08    0.00   12.11 
head(results)
## Source: local data frame [6 x 2]
##         bin       med
## 1  410.9575  410.9577
## 2  456.6270  456.6275
## 3  552.3670  552.3674
## 4  875.4895  875.4898
## 5 1018.6805 1018.6806
## 6 1102.2435 1102.2436
set.seed(42)

x供参考,在基本R中有
?cut
用于装箱价值。我应该提到,我希望在设定范围内装箱价值(对于我正在做的事情,我希望装箱的价值在0.0005范围内,所以是200.0000-200.0005等),我将编辑上面的文本以合并所有这些,但是这些文件都是.txt文件,因为我有太多的.csv值,它的形式是x1、x2、x3(比如104、204、223.3432)等等。基本上,我的目标是将所有值分组,然后当所有值在给定范围内分组时,如果有意义的话,我想取原始非分组值的所有值的中位数。例如,如果我有1,2,4,5,10,我用一个