小编Cra*_*aig的帖子

从 R 中的 CSV 文件创建镶木地板文件目录

我遇到了越来越多的情况,需要在 R 中使用内存不足 (OOM) 方法进行数据分析。我熟悉其他 OOM 方法,例如sparklyr和 ,DBI但我最近遇到arrow并希望对其进行更多探索。

问题是我通常使用的平面文件足够大,如果没有帮助,它们无法读入 R。因此,我理想情况下更喜欢一种无需首先将数据集读入 R 即可进行转换的方法。

您能提供的任何帮助将不胜感激!

csv import r parquet apache-arrow

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

使用 as.Date 和 as_date 将 `dttm` 转换为 `date` 格式在 R 中给出不同的结果

我有一个大型数据集,其中包含事件时间和日期的各个列。我最终创建了一个dttm包含时间和日期的主对象,但当我尝试根据日期进行过滤时遇到了麻烦。这是一个反映我自己的示例数据集:

library(tidyverse)

d<- structure(list(date = structure(c(1530921600, 1531008000, 
1530403200, 1530489600, 1530576000, 1530489600, 1530576000, 1531008000, 
1530921600, 1530662400, 1530748800, 1531180800, 1530748800, 1531526400, 
1531526400, 1532044800, 1532131200, 1531180800, 1531353600, 1531353600
), class = c("POSIXct", "POSIXt"), tzone = "UTC"), date_time = structure(c(1531019100, 
1531117500, 1530440640, 1530562440, 1530633240, 1530571920, 1530648900, 
1531037100, 1531010460, 1530717240, 1530808200, 1531237020, 1530813000, 
1531614060, 1531637640, 1532104320, 1532195220, 1531290120, 1531434300, 
1531409280), class = c("POSIXct", "POSIXt"), tzone = "")), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -20L))
Run Code Online (Sandbox Code Playgroud)

数据如下:

# A tibble: 20 x 2 …
Run Code Online (Sandbox Code Playgroud)

r lubridate tidyverse

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

子集 R 中的列表向量

假设我有一个列表向量:

library(tidyverse)

d <- tribble(
  ~x,
  c(10, 20, 64),
  c(22, 11),
  c(5, 9, 99),
  c(55, 67),
  c(76, 65)
)
Run Code Online (Sandbox Code Playgroud)

我怎样才能对这个向量进行子集化,例如,我有长度大于 2 的列表的行?这是我使用 tidyverse 的失败尝试:

filter(d, length(x) > 2)
# A tibble: 5 x 1
  x        
  <list>   
1 <dbl [3]>
2 <dbl [2]>
3 <dbl [3]>
4 <dbl [2]>
5 <dbl [2]>
Run Code Online (Sandbox Code Playgroud)

r list subset dplyr tidyverse

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

在R中串联2个数据帧

假设我有两个具有相同维度和列名称的数据框:

library(tidyverse)

x <- tribble(
  ~x, ~y, ~z,
  1,2,3,
  2,3,4,
  3,4,5
)

y <- tribble(
  ~x, ~y, ~z,
  "a","b","c",
  "b","c","d",
  "c","d","e"
)
Run Code Online (Sandbox Code Playgroud)

我如何结合它们来创建这个:

   # A tibble: 3 x 3
  x     y     z    
  <chr> <chr> <chr>
1 1a    2b    3c   
2 2b    3c    4d   
3 3c    4d    5e 
Run Code Online (Sandbox Code Playgroud)

我最初的想法是做这样的事情,但是没有用:

paste0(x, y)
Run Code Online (Sandbox Code Playgroud)

r concatenation

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

生成新的唯一 ID 号,同时排除之前在 R 中生成的 ID 号

我想为数据库中的行生成唯一的 ID。我将持续向该数据库添加条目,因此我需要同时生成新的 ID。虽然我的数据库相对较小,并且重复随机 ID 的可能性很小,但我仍然希望构建一个编程式故障安全装置,以确保我永远不会生成过去已使用过的 ID。

对于初学者来说,以下是一些示例数据,我可以使用它们来启动示例数据库:

library(tidyverse)
library(ids)
library(babynames)
    
database <- data.frame(rid = random_id(5, 5), first_name = sample(babynames$name, 5))

print(database)
          rid first_name
1  07282b1da2      Sarit
2  3c2afbb0c3        Aly
3  f1414cd5bf    Maedean
4  9a311a145e    Teriana
5  688557399a    Dreyton
Run Code Online (Sandbox Code Playgroud)

这是一些示例数据,我可以使用它们来表示将附加到现有数据库的新数据:

new_data <- sample(babynames$name, 5)

print(new_data)

 first_name
1    Hamzeh
2   Mahmoud
3   Matelyn
4    Camila
5     Renae
Run Code Online (Sandbox Code Playgroud)

现在,我想要的是使用该函数绑定随机生成的 ID 的新列random_id,同时检查以确保新生成的 ID 与对象中的任何现有 ID 不匹配database。如果生成器创建了相同的 ID,那么理想情况下它将生成新的替换,直到创建真正唯一的 ID。

任何帮助将非常感激!

更新

我想到了一种有帮助但仍然有限的可能性。我可以生成新的 ID,然后使用for()循环来测试现有数据库中是否存在任何新生成的 ID。如果是这样,那么我会重新生成一个新的 ID。例如...

new_data$rid <- random_id(nrow(new_data), 5) …
Run Code Online (Sandbox Code Playgroud)

r uniqueidentifier unique-key dplyr ids

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