【发布时间】:2019-08-31 19:38:05
【问题描述】:
我正在重组包含血压读数的变量。每个读数包含由正斜杠 (/) 分隔的收缩压和舒张压值。对于此示例,每行(即每人)有三个读数。
我想要的输出是每个读数的收缩压和舒张压值都有单独的变量。
以下是 csv 格式的数据示例:
id,v1,v2,v3
1,116 / 77,121 / 68,105 / 76
2,164 / 67,171 / 79,155 / 68
3,146 / 109,,
4,120 / 80,102 / 64,137 / 87
5,112 / 50,130 / 40,
加载 tidyverse 后,我可以对每个读数使用单独的方法来执行此操作,例如,
blPr <- read_csv('BlPr.csv')
blPr <- blPr %>% separate (v1 , c('v1_sys' , 'v1_dias') , sep = '/' , remove = FALSE)
但是,由于实际数据集每人有多个读数,因此我试图通过使用 for 循环来消除多行。在查看了网络上的一些示例后,我尝试了:
for (i in 1:3) {
blPr <- blPr %>% separate (v[i] , c('v[i]_sys' , 'v[i]_dias') , sep = '/' , remove = FALSE)
}
返回错误信息:
Error in eval_tidy(enquo(var), var_env) : object 'v' not found
我已经以多种方式修改了代码,但由于我不明白哪里出了问题,所以我一无所获。
【问题讨论】:
-
嗨@David,您的示例的预期输出是什么?
-
奇怪:表头元素用
,分隔,数据部分用/分隔 -
我想为收缩压和舒张压读数设置单独的变量,现在在单个变量中用斜线分隔。所有变量在 csv 文件中用逗号分隔。
-
嗨@David,欢迎来到 StackOverflow!您可以使用
dput(head(df))(其中df是您的数据框的名称)并使用问题左下角的edit选项将其添加到您的问题中吗?如果您能做到这一点并添加您的预期输出,这将有助于获得更快和相关的答案。 -
您希望每个 ID 保留哪些读数?第一个,最后一个,全部?
标签: r