小编Llo*_*mas的帖子

读取多个CSV文件的基数R比读取器快

有很多关于如何读取多个CSV并将它们绑定到一个数据帧的文档.我有5000多个CSV文件需要读入并绑定到一个数据结构中.

特别是我在这里的讨论:使用rbind将多个.csv文件加载到R中的单个数据帧中的问题

奇怪的是,基础R比我尝试过的任何其他解决方案都要快得多.

这是我的CSV的样子:

> head(PT)
  Line          Timestamp       Lane.01 Lane.02 Lane.03 Lane.04 Lane.05 Lane.06 Lane.07 Lane.08
1    PL1    05-Jan-16 07:17:36      NA      NA      NA      NA      NA      NA      NA      NA
2    PL1    05-Jan-16 07:22:38      NA      NA      NA      NA      NA      NA      NA      NA
3    PL1    05-Jan-16 07:27:41      NA      NA      NA      NA      NA      NA      NA      NA
4    PL1    05-Jan-16 07:32:43    9.98   10.36   10.41   10.16   10.10    9.97   10.07    9.59
5    PL1    05-Jan-16 07:37:45    9.65    8.87    9.88    9.86    8.85    8.75    9.19    8.51
6    PL1    05-Jan-16 …
Run Code Online (Sandbox Code Playgroud)

r readr tidyverse

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

聚集在前两排

我有一些格式很差的数据,我必须使用.它在前两行中包含两个标识符,后跟数据.数据看起来像:

     V1       V2       V3
1  Date 12/16/18 12/17/18
2 Equip        a        b
3    x1        1        2
4    x2        3        4
5    x3        5        6
Run Code Online (Sandbox Code Playgroud)

我想让gather数据变得整洁,但只有当你有单个列名时,才能收集数据.我也尝试过传播.我提出的唯一解决方案是非常hacky并且感觉不对.有没有一种优雅的方式来处理这个?

这就是我想要的:

      Date Equip metric value
1 12/16/18     a     x1     1
2 12/16/18     a     x2     3
3 12/16/18     a     x3     5
4 12/17/18     b     x1     2
5 12/17/18     b     x2     4
6 12/17/18     b     x3     6
Run Code Online (Sandbox Code Playgroud)

这种方法让我很接近,但我不知道如何处理糟糕的格式(没有标题,没有行名称).gather如果格式正确,应该很容易.

> as.data.frame(t(df))
         V1    V2 V3 V4 V5
V1     Date Equip x1 x2 x3
V2 12/16/18 …
Run Code Online (Sandbox Code Playgroud)

r reshape2 tidyr

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

从宽格式到长格式时保留列的顺序

当我从宽格式到长格式收集列时,我试图保留列的顺序。我遇到的问题是在我之后gathersummarize订单丢失了。列数很大,所以我不想手动输入订单。

下面是一个例子:

library(tidyr)
library(dplyr)

N <- 4
df <- data.frame(sample = c(1,1,2,2),
                 y1.1 = rnorm(N), y2.1 = rnorm(N), y10.1 = rnorm(N))
> df
  sample      y1.1      y2.1      y10.1
1      1  1.040938 0.8851727 -0.3617224
2      1  1.175879 1.0009824 -1.1352406
3      2 -1.501832 0.3446469 -1.8687008
4      2 -1.326817 0.4434628 -0.8795962
Run Code Online (Sandbox Code Playgroud)

我想要的是保留列的顺序。在我做了一些操作后,订单丢失了。在这里看到:

dfg <- df %>% 
  gather(key="key", value="value", -sample) %>%
  group_by(sample, key) %>%
  summarize(mean = mean(value))

> filter(dfg, sample == 1)
  sample   key       mean
   <dbl> <chr>      <dbl>
1      1  y1.1 …
Run Code Online (Sandbox Code Playgroud)

r tidyr

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

删除仅基于上一行的重复行

我正在尝试从数据框中删除重复的行,仅基于前一行.该duplicateunique功能将删除所有重复,让你只用唯一行,这不是我想要的.

我用循环说明了这里的问题.我需要对此进行矢量化,因为我的实际数据集要大得多以使用循环.

x <- c(1,1,1,1,3,3,3,4)
y <- c(1,1,1,1,3,3,3,4)
z <- c(1,2,1,1,3,2,2,4)
xy <- data.frame(x,y,z)

xy
  x y z
1 1 1 1
2 1 1 2
3 1 1 1
4 1 1 1 #this should be removed
5 3 3 3
6 3 3 2
7 3 3 2 #this should be removed
8 4 4 4

# loop that produces desired output
toRemove <- NULL
for (i in 2:nrow(xy)){
   test <- as.vector(xy[i,] == xy[i-1,]) …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

逻辑运算符:和表达喜欢的OR

我有一个很难理解R为如何治疗AND和OR运算时,我使用filterdplyr.

这是一个例子来说明:

library(dplyr)
xy <- data.frame(x=1:6, y=c("a", "b"), z= c(rep("d",3), rep("g",3)))

> xy
  x y z
1 1 a d
2 2 b d
3 3 a d
4 4 b g
5 5 a g
6 6 b g
Run Code Online (Sandbox Code Playgroud)

使用filter我想消除所有行x==1 z==d.这会让我相信我想使用AND运算符:&

> filter(xy, x != 1 & z != "d")
  x y z
1 4 b g
2 5 a g
3 6 b g
Run Code Online (Sandbox Code Playgroud)

但这会删除所有具有x==1 或的 行 …

r

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

标签 统计

r ×5

tidyr ×2

dataframe ×1

readr ×1

reshape2 ×1

tidyverse ×1