小编Sam*_*ert的帖子

如何使用AWS CLI仅复制S3存储桶中与给定字符串模式匹配的文件

我正在使用AWS CLI使用如下命令将文件从S3存储桶复制到我的R计算机:

  system(
    "aws s3 cp s3://my_bucket_location/ ~/my_r_location/ --recursive --exclude '*' --include '*trans*' --region us-east-1"
    )
Run Code Online (Sandbox Code Playgroud)

这按预期工作,即它复制my_bucket_location中该位置文件名中包含"trans"的所有文件.

我面临的问题是我有其他文件具有类似的命名约定,我不想在此步骤中导入.作为一个例子,在下面的列表中我只想复制前两个文件,而不是最后两个:

File list
trans_120215.csv
trans_130215.csv
sum_trans_120215.csv
sum_trans_130215.csv
Run Code Online (Sandbox Code Playgroud)

如果我正在使用正则表达式,我可以使它更具体"^trans_\\d+",只需要引入前两个文件,但使用AWS CLI似乎不可能.所以我的问题是如何使用AWS CLI进行更复杂的模式匹配,如下所示?

  system(
    "aws s3 cp s3://my_bucket_location/ ~/my_r_location/ --recursive --exclude '*' --include '^trans_\\d+' --region us-east-1"
    )
Run Code Online (Sandbox Code Playgroud)

请注意,我只能使用有关文件的信息,即我想导入带有模式的文件"^trans_\\d+",我不能使用其他不需要的文件在开头包含sum_的事实,因为这只是一个例子可能是其他类似名称的文件,如"check_trans_120215.csv".

我已经考虑了下面的其他替代方案,但希望有一种方法可以调整复制命令以避免沿着这两条路线走下去:

  • 列出存储桶中的所有项目>使用R中的regex指定我想要的文件>仅导入这些文件
  • 保持复制命令的原样>复制后删除R机器上的不需要的文件

r amazon-s3 amazon-web-services aws-cli

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

在R中的数据框中将负值转换为零

我在R中有一个数据帧,我想将所有列(在ID之外)从负转换为零

id1  id2  var1  var2  var3
-1   -1   0     -33     5
-1   -2   9     -10    -1
Run Code Online (Sandbox Code Playgroud)

我可以使用代码行转换所有列,如:

temp[temp < 0] <- 0
Run Code Online (Sandbox Code Playgroud)

但我无法将其调整为仅一列的列.我试过了:

temp[temp < 0, -c(1,2)] <- 0
Run Code Online (Sandbox Code Playgroud)

但是这个错误说明不存在不存在的行

r

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

如何使用 aws-cli 将文件从子目录直接复制到文件夹

我有许多文件包含在/myfolder.

我想使用 aws cli 将它们移动到/newfolder.

例如:

/myfolder/2017_01_01/file1.txt
/myfolder/2017_01_02/file2.txt
...
Run Code Online (Sandbox Code Playgroud)

我想将文件复制到一个新文件夹中:

/newfolder/file1.txt
/newfolder/file2.txt
...
Run Code Online (Sandbox Code Playgroud)

当我使用如下cp命令时:

aws s3 cp s3://myfolder/ s3://newfolder/ --recursive --exclude '*' --include '*file*'
Run Code Online (Sandbox Code Playgroud)

正确的文件被复制,但问题是文件保留在新位置的子文件夹中:

/newfolder/2017_01_01/file1.txt
/newfolder/2017_01_02/file2.txt
...
Run Code Online (Sandbox Code Playgroud)

是否可以将文件“从”其子文件夹中复制出来,以便直接放入/newfolder

aws-cli

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

将润滑功能改为星期一而不是星期日

dates <- NULL

date <- as.Date("01/01/2014","%d/%m/%Y")

dates <- data.frame(date=as.Date(character())
                    ,cal_day_in_year_num = numeric()
                    ,cal_week_id = numeric()
                    ,cal_week_start_date = as.Date(character())
                    ,cal_week_end_date = as.Date(character())
)

for (i in 1:365) {

  dates[i,1] <- date + days(i-1) ## date

  dates[i,2] <- yday(dates[i,1]) ## cal_day_in_year_num

  dates[i,3] <- paste(year(dates[i,1]),sprintf("%02d",week(dates[i,1])),sep="") ## cal_week_id

  dates[i,4] <- floor_date(dates[i,1], "week") ## cal_week_start_date

  dates[i,5] <- ceiling_date(dates[i,1], "week") ## cal_week_end_date

}

View(dates)
Run Code Online (Sandbox Code Playgroud)

对于给定的日期,我正在尝试使用lubridate函数来计算一周的相应开始和结束日期

我遇到的问题是,每周的第一天是周日,我需要周一 - 有没有人有办法解决这个问题?

r lubridate

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

如何删除 aws redshift 中的 NaN

我正在尝试从 aws redshift 中的列中删除 NaN(基于 PostgreSQL 8.0.2)。

我想使用更新语句来执行此操作,例如:

UPDATE table001
SET variable_a = NULL
FROM table001 
WHERE variable_a = 'NaN'
Run Code Online (Sandbox Code Playgroud)

但找不到一种方法来子集到我需要的行。我也尝试过WHERE variable_a = 'NaN'::floatWHERE variable_a = FLOAT8 'NaN'但在所有情况下,where 子句都不会带回任何行

(variable_a 的数据类型为 float8)

postgresql amazon-redshift

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

如何在 SQLite 中计算不同利率的复利

我需要按产品计算复利,其中利率可能因年份而异。

简化表如下。initial_value是产品在第一年年初的价值,final_value是包括相应年末利息的价值。

product year    initial_value   interest    final_value
a         1       10000           0.03        10,300.00
a         2                       0.02        10,506.00
a         3                       0.01        10,611.06
b         1       15000           0.04        15,600.00
b         2                       0.06        16,536.00
b         3                       0.07        17,693.52
Run Code Online (Sandbox Code Playgroud)

重新创建表:

CREATE TABLE temp (year INTEGER, product CHARACTER,
                   initial_value DECIMAL(10,2), interest DECIMAL(10,2));

INSERT INTO temp VALUES (1, 'a', 10000, 0.03);
INSERT INTO temp VALUES (2, 'a', 0, 0.02);
INSERT INTO temp VALUES (3, 'a', 0, 0.01);

INSERT INTO temp VALUES (1, 'b', 15000, …
Run Code Online (Sandbox Code Playgroud)

sql sqlite

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

问题在 R 中使用 try 来捕获导入文件的错误

我在 R 中有一个进程,其中我在 R 中导入了许多文件。

有时,某些文件会出现问题,例如,我正在读取的文件中不存在 EOF 字符,因此 read.table 语句会出错。

由于有很多文件要处理,这很难手动管理,所以我想使用一些错误捕获来改变问题的用户并继续处理其他文件。

我曾尝试使用try并引用 SOF 帖子Excel IFERROR 的 R 等价物是什么?

下面我想测试导入,然后根据结果向用户提供一些消息或实际导入文件。

  mtry <- try(read.table("~/file_location/test_file.csv", 
                        fill = TRUE,
                        stringsAsFactors = FALSE))


  if (!inherits(mtry, "try-error")) {

    read.table("~/file_location/test_file..csv", 
               fill = TRUE,
               stringsAsFactors = FALSE)

  } else {

    message("File doesn't exist, please check")

  }
Run Code Online (Sandbox Code Playgroud)

问题是该try()语句在日志中产生了一个错误,这是我试图避免的。

谢谢

r try-catch

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

是否可以识别是否在unix或windows环境中运行R.

我需要为我的代码设置不同的路径,具体取决于它是在windows还是unix中运行.我目前设置它,以便用户在运行之前必须更改变量"Renvironment",如下所示.

Renvironment <- "windows"

if (Renvironment == "windows") {
  working_dir <- "windows_path..."
  function_library <- "windows_path..."
} else if (Renvironment == "unix") {
  working_dir <- "unix_path..."
  function_library <- "unix_path..."
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有默认的R环境变量,我可以使用它来保存用户必须记住手动更改变量?

r

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