我正在使用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中有一个数据帧,我想将所有列(在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)
但是这个错误说明不存在不存在的行
我有许多文件包含在/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?
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函数来计算一周的相应开始和结束日期
我遇到的问题是,每周的第一天是周日,我需要周一 - 有没有人有办法解决这个问题?
我正在尝试从 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'::float,WHERE variable_a = FLOAT8 'NaN'但在所有情况下,where 子句都不会带回任何行
(variable_a 的数据类型为 float8)
我需要按产品计算复利,其中利率可能因年份而异。
简化表如下。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) 我在 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()语句在日志中产生了一个错误,这是我试图避免的。
谢谢
我需要为我的代码设置不同的路径,具体取决于它是在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环境变量,我可以使用它来保存用户必须记住手动更改变量?