假设我有两个向量定义如下:
a <- c("a1", "a2", "a3")
b <- c("b1", "b2", "b3")
Run Code Online (Sandbox Code Playgroud)
现在我想最终得到一个像这样的字符串向量:
c("a1","b1", "a2", "b2", "a3", "b3")
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我可以通过发送系统命令并使用 curl 来访问 REST API pipe,如下所示
filename fn pipe "curl -k -u &user.:&pass. 'https://blahblah.com/rest/api/content/108428908/child/attachment' ";
data new;
infile fn;
input;
put _infile_;
run;
Run Code Online (Sandbox Code Playgroud)
这有效,但我想使用 PROC HTTP,因此我在 .json 文件而不是日志中获取响应,并且我可以使用 SAS 密码加密。这是我的 PROC HTTP 代码:
filename out "/blah/blahblah/output.json";
proc http
url = 'https://blahblah.com/rest/api/content/108428908/child/attachment'
method = "GET"
webusername = "&user"
webpassword = "&pass"
out = out
;
run;
Run Code Online (Sandbox Code Playgroud)
这对于给我一个 json 文件是有效的,但是我返回的 json 文件说“用户不允许查看内容的附件”,这是我在添加-k选项之前从 curl 得到的响应(即--insecure)。
那么我怎样才能-k在 PROC HTTP 中做等价的呢?(告诉 SAS 不要检查 SSL 证书)。修改可以在 .SAS 文件中指定的选项之外的任何选项都不是一个选项,因为我无权更改这些选项。
这个问题有一个很好的答案,说您可以用来awk '!seen[$0]++' file.txt从文件中删除非连续的重复行。仅当匹配模式时,如何才能从文件中删除非连续重复行?例如,仅当它们包含字符串“ #####”时
输入示例
deleteme.txt ##########
1219: 'PCM BE PTP'
deleteme.txt ##########
1221: , 'PCM FE/MID PTP UT','PCM IA 1 PTP'
deleteme2.txt ##########
1222: , 'PCM BE PTP UT'
1221: , 'PCM FE/MID PTP UT','PCM IA 1 PTP'
deleteme2.txt ##########
1223: , 'PCM BE PTP'
1221: , 'PCM FE/MID PTP UT','PCM IA 1 PTP'
deleteme2.txt ##########
1225: , 'PCM FE/MID PTP'
Run Code Online (Sandbox Code Playgroud)
所需的输出
deleteme.txt ##########
1219: 'PCM BE PTP'
1221: , 'PCM FE/MID PTP UT','PCM IA 1 …Run Code Online (Sandbox Code Playgroud) 如何根据data.table中的条件删除/保留组?有没有比添加新列更好的方法,然后过滤该列并将其删除?
set.seed(0)
dt <- data.table(a = rep(1:3, rep(3, 3)), b = sample(1:5, 9, T))
# a b
# 1: 1 4
# 2: 1 1
# 3: 1 2
# 4: 2 1
# 5: 2 4
# 6: 2 2
# 7: 3 4
# 8: 3 3
# 9: 3 4
#data.table
dt[, keep := 2 %in% b, by = a][keep == T][, keep := NULL][]
# a b
# 1: 1 5
# 2: 1 2
# …Run Code Online (Sandbox Code Playgroud) 这是玩具示例。我想比较ra,它给出了范围(例如,时间)和ev,它表示事件发生的时间。
我想创建一个新专栏hits,ra说明每个范围内发生了多少事件。
ra <- data.frame(a=c(0, 250, 500, 750), b=c(250, 500, 750, 900))
ra
a b
1 0 250
2 250 500
3 500 750
4 750 900
ev <- data.frame(events=c(1,1,1,1,1), time=c(100, 200, 450, 550, 600))
ev
events time
1 1 100
2 1 200
3 1 500
4 1 550
5 1 600
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的。
data.frame(a=c(0, 250, 500, 750), b=c(250, 500, 750, 900), hits=c(2,1,2,0))
a b hits
1 0 250 2
2 250 …Run Code Online (Sandbox Code Playgroud) 我有一个包含一些NA元素的矩阵(例如mat下面),我想创建一个新函数,用NA隐藏的值打印它(fun如下所示).我怎样才能做到这一点?
mat <- cbind(c(1,2,NA,NA),c(3,3,3,NA),c(NA,4,4,4),c(NA,NA,5,5))
print(mat)
[,1] [,2] [,3] [,4]
[1,] 1 3 NA NA
[2,] 2 3 4 NA
[3,] NA 3 4 5
[4,] NA NA 4 5
fun(mat)
[,1] [,2] [,3] [,4]
[1,] 1 3
[2,] 2 3 4
[3,] 3 4 5
[4,] 4 5
Run Code Online (Sandbox Code Playgroud) 我想通过选择列来制作我的数据的子集,如下所示:
select(df, col1, col2, col3, col4)
Run Code Online (Sandbox Code Playgroud)
但有时我的数据集略有不同,只有col1,col2和col4.
如何使用select(),如果列不存在,它会继续而不会出错?
因此它会给出一个带col1,col2和col4的数据集(并跳过col3).如果我只运行上面的select()行,我会收到此错误:
Error in overscope_eval_next(overscope, expr) : object 'col3' not found
Run Code Online (Sandbox Code Playgroud) 我一直在尝试将我的计算从 excel 转移到 R,只是想知道是否有办法复制 IF(有一个步骤)。
所以我的数据在下面,我在 excel 中用简单公式得到的结果在 DIFF 列 ( =IF(A2=A3, (C2-B3) * 24, 0))
NO T_DATE L_DATE DIFF
AAA 10/08/2019 17:02:00 10/08/2019 20:35:00 5.83
AAA 10/08/2019 14:45:00 10/08/2019 15:10:00 11.78
AAA 10/08/2019 03:23:00 10/08/2019 10:25:00 17.32
AAA 09/08/2019 17:06:00 10/08/2019 01:11:00 25.70
AAA 08/08/2019 23:29:00 09/08/2019 10:27:00 0
BBB 08/08/2019 09:34:00 08/08/2019 21:19:00 22.23
BBB 07/08/2019 23:05:00 08/08/2019 06:09:00 18.03
BBB 07/08/2019 12:07:00 07/08/2019 20:25:00 22.32
BBB 06/08/2019 22:06:00 07/08/2019 08:53:00 22.77
BBB 06/08/2019 10:07:00 06/08/2019 19:44:00 …Run Code Online (Sandbox Code Playgroud)