相关疑难解决方法(0)

如何拆分数据框?

我想将数据框分成几个较小的数据框.这看起来像一个非常微不足道的问题,但我找不到网络搜索的解决方案.

split r dataframe r-faq

70
推荐指数
6
解决办法
20万
查看次数

按行数拆分数据框

我有一个由400'000行和大约50列组成的数据帧.由于这个数据框架太大,因此计算起来太费力了.我想将这个数据帧拆分成较小的数据帧,之后我将运行我想要运行的函数,然后在最后重新组装数据帧.

我没有用于分割此数据帧的分组变量.我只想按行数拆分它.例如,我想将这个400'000行的表分成400个1'000行的数据帧.我怎么能这样做?

split r dataframe

24
推荐指数
2
解决办法
2万
查看次数

在R中将矢量拆分为不相等的块

我有同样的问题在这里,我除了要指定另一个向量变量分裂长度.所以,像这样:

example.data<-paste("ex",1:10,sep="")
example.data
 [1] "ex1"  "ex2"  "ex3"  "ex4"  "ex5"  "ex6"  "ex7"  "ex8"  "ex9"  "ex10"
split.lens <- c(4,2,1,3)
Run Code Online (Sandbox Code Playgroud)

应该给我以下列表:

result.list
[[1]]
[1] "ex1" "ex2" "ex3" "ex4"

[[2]]
[1] "ex5" "ex6"

[[3]]
[1] "ex7"

[[4]]
[1] "ex8"  "ex9"  "ex10"
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这样做的最好方法split.有任何想法吗?

谢谢!

split r

8
推荐指数
1
解决办法
1224
查看次数

将连续变量的对数分离

我试图将连续变量离散化,将其分为三个等级.我想对正连续变量(在这种情况下,收入)的日志做同样的事情.

require(dplyr)
set.seed(3)
mydata = data.frame(realinc = rexp(10000))

summary(mydata)

new = mydata %>% 
  select(realinc) %>%
  mutate(logrealinc = log(realinc),
         realincTercile = cut(realinc, 3),
         logrealincTercile = cut(logrealinc, 3),
         realincTercileNum = as.numeric(realincTercile),
         logrealincTercileNum = as.numeric(logrealincTercile)) 

new[sample(1:nrow(new), 10),]
Run Code Online (Sandbox Code Playgroud)

我原以为使用cut()会对每个变量(收入和对数收入)的离散因子产生相同的水平,因为log是单调函数.所以这里右边的两列应该是相等的,但这似乎不会发生.这是怎么回事?

> new[sample(1:nrow(new), 10),]
       realinc  logrealinc  realincTercile logrealincTercile realincTercileNum logrealincTercileNum
7931 0.2967813 -1.21475972 (-0.00805,2.83]     (-4.43,-1.15]                 1                    2
9036 0.9511824 -0.05004944 (-0.00805,2.83]      (-1.15,2.15]                 1                    3
8204 4.5365676  1.51217069     (2.83,5.66]      (-1.15,2.15]                 2                    3
3136 2.0610693  0.72322490 (-0.00805,2.83]      (-1.15,2.15]                 1                    3
9708 0.9655805 -0.03502581 (-0.00805,2.83]      (-1.15,2.15]                 1 …
Run Code Online (Sandbox Code Playgroud)

r discretization

6
推荐指数
1
解决办法
151
查看次数

在 R 中快速将大向量分割成块

我的问题与这个问题密切相关:

在 R 中将向量拆分为块

我试图将一个大向量分成已知的块大小,但速度很慢。具有偶数余数的向量的解决方案在这里:

存在因素时的快速解决方案如下:

根据数据帧的长度将数据帧分成相等的部分

我想处理没有(大)因素存在的情况,因为我想要相当大的块。

我的矢量示例比我现实生活中的矢量小得多:

d <- 1:6510321
# Sloooow
chunks <- split(d, ceiling(seq_along(d)/2000))
Run Code Online (Sandbox Code Playgroud)

performance r vector

5
推荐指数
1
解决办法
6605
查看次数

用 rmarkdown 包装宽表

我有一个非常宽的表格(300 多列),并且想通过换行来显示它。在示例中,我将仅使用 100 列。

我的想法是重复使用 kable 来显示表的子集:

library(kableExtra)
set.seed(1)
data = data.frame(matrix(rnorm(300, 10, 1), ncol = 100))

kable(data[, 1:5], 'latex', booktabs = T) 
kable(data[, 6:10], 'latex', booktabs = T) 
kable(data[, 11:15], 'latex', booktabs = T) 
Run Code Online (Sandbox Code Playgroud)

但这显然很乏味......我知道有缩小比例的选项,但由于我有这么多列,这是不可能的。

我可以在 kable 中添加任何参数来实现它吗?


更新:@jay.sf 的答案似乎运行良好,但这里没有产生相同的结果。相反,我得到了一些简单的代码 - 您能否再看一下并让我知道我可以在哪里改进?谢谢!

结果

我的是sessionInfo()R version 3.5.1 (2018-07-02)rmarkdown::pandoc_version().1.19.2.1

latex r r-markdown kable

5
推荐指数
1
解决办法
5070
查看次数

由于XML,R不会停止占用内存/ RAM

我有一个双循环,如下所示 的问题是R(2.15.2)使用越来越多的内存,我不明白为什么.

虽然我知道这必须在内循环中发生,因为rbind()我在那里做,我不明白为什么R在外循环的新循环开始时实际上重复使用对象('xmlCatcher')时继续抓取内存:

# !!!BEWARE this example creates a lot of files (n=1000)!!!!

require(XML)

chunk <- function(x, chunksize){
        # source: http://stackoverflow.com/a/3321659/1144966
        x2 <- seq_along(x)
        split(x, ceiling(x2/chunksize))
    }

chunky <- chunk(paste("test",1:1000,".xml",sep=""),100)

for(i in 1:1000){
writeLines(c(paste('<?xml version="1.0"?>\n <note>\n    <to>Tove</to>\n    <nr>',i,'</nr>\n    <from>Jani</from>\n    <heading>Reminder</heading>\n    ',sep=""), paste(rep('<body>Do not forget me this weekend!</body>\n',sample(1:10, 1)),sep="" ) , ' </note>')
,paste("test",i,".xml",sep=""))
}

for(k in 1:length(chunky)){
gc()
print(chunky[[k]])
xmlCatcher <- NULL

for(i in 1:length(chunky[[k]])){
    filename    <- chunky[[k]][i]
    xml         <- xmlTreeParse(filename)
    xml         <- xmlRoot(xml)
    result      <- sapply(getNodeSet(xml,"//body"), …
Run Code Online (Sandbox Code Playgroud)

xml loops r

4
推荐指数
1
解决办法
258
查看次数

如何按dplyr中的固定行数分组?

我有一个数据框:

set.seed(123)
x <- sample(10)
y <- x^2
my.df <- data.frame(x, y)
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

> my.df
    x   y
1   3   9
2   8  64
3   4  16
4   7  49
5   6  36
6   1   1
7  10 100
8   9  81
9   2   4
10  5  25
Run Code Online (Sandbox Code Playgroud)

我想要的是每n行对行进行分组,以计算均值,总和或5个选定行上的任何值。对于n = 5这样的事情:

my.df %>% group_by(5) %>% summarise(sum = sum(y), mean = mean(y))
Run Code Online (Sandbox Code Playgroud)

预期的输出将类似于:

# A tibble: 1 x 2
     sum   mean
   <dbl>  <dbl>
1    174   34.8
2    211 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

4
推荐指数
1
解决办法
118
查看次数

如何将分割更改为R中的水平分割?

我有矢量

x <- c("A", "B", "C", "D", "E", "F")
Run Code Online (Sandbox Code Playgroud)

我按以下方式分裂:

split(x, 1:2)
Run Code Online (Sandbox Code Playgroud)

它出现为(a,c,e)和(b,d,f),但我想要(a,b,c)和(d,e,f).有什么方法可以将它改为水平分割而不是垂直分割?

split r vector

2
推荐指数
1
解决办法
66
查看次数

R:给定一个列表,返回等长子列表的列表

每个子列表的长度指定为LEN。所有子列表(可能除了最后一个子列表)都应该在原始列表中具有完全相同的 LEN 元素。

输入可以是列表(相同类型元素)或向量。输出类型应该对应。

例如:

给定c(1, 2, 3, 4, 5)LEN = 2,该函数应返回c(c(1, 2), c(3, 4), c(5))

给定list("", "hi", "world", "R is hard")LEN = 2,该函数应返回list(list("", "hi"), list("world", "R is hard")

我正在寻找一种 R 惯用的方法来做到这一点。在其他语言中,for 循环就足够了。

或者,由于我是 R 的新手,因此这个问题的设置一开始可能并不符合习惯。如果有请指出。但是输入固定为列表或向量。

谢谢!

r

1
推荐指数
1
解决办法
3847
查看次数

使用R导入格式异常的文本数据

我已从一台设备输出数据。不幸的是,输出数据的组织不是很好,我一直在用R编写代码来分解它。本质上,数据是粘贴到一个长文档中的每个主题的单独信息列表(基本描述信息,以及每个时间间隔的两个不同测量A和B的原始数据)。例如:

Date: 01/01/2016
Time: 12:00:00 
Subject: Subject1
A: 
1: 1  2  4  1 
2: 2  1  2  3
3: 1  0  2  7
B:
1: 2  3  0  1
2: 4  1  1  2 
3: 3  5  2  8

Date: 01/01/2016
Time: 12:00:00 
Subject: Subject2   
A: 
1: 8  2  0  1 
2: 9  1  2  7
3: 1  6  2  7
B:
1: 2  3  2  0
2: 6  7  1  2
3: 3  3  2  4
Run Code Online (Sandbox Code Playgroud)

我已经用R编写了一个有效的代码,但是使用split(seq_along),for循环和do.call效果很好(主要基于此堆栈溢出问题和 …

for-loop r list dataframe

1
推荐指数
1
解决办法
77
查看次数

标签 统计

r ×11

split ×4

dataframe ×3

vector ×2

discretization ×1

dplyr ×1

for-loop ×1

kable ×1

latex ×1

list ×1

loops ×1

performance ×1

r-faq ×1

r-markdown ×1

xml ×1