随着时间的推移,我正在收集患者的伤害调查数据。数据询问每位患者是否在一侧或两侧疼痛,然后要求进一步详细说明,这是一个文本框输入。
我现在希望1)测试每个患者是否存在文本,然后2)如果文本确实存在,则将身体区域的标题与侧面连接起来3)完成括号中的确切细节,这个连接文本的结尾。
我的数据库在70个变量上有超过500个障碍物。我的数据的一个(小)示例是:
head((RawData[,c(1,12:13)]), 5)
Patient ID Elbow Elbow Details
1 A <NA> <NA>
2 B <NA> <NA>
3 C <NA> <NA>
4 D Pain on One Side Pain on my right
5 E <NA> <NA>
我的预期输出是:
Patient ID Elbow Soreness
1 A <NA>
2 B <NA>
3 C <NA>
4 D Elbow: Pain on One Side. (Pain on my right)
5 E <NA>
这可能在R内吗?在Excel中,我可以简单地使用标题的文本并编写IF语句来评估文本是否存在。如果是这样,我会在下一栏中连接文本。我希望使用R,考虑到我的数据库有多大,我将其用于分析,所以任何帮助都将不胜感激!
谢谢。
答案 0 :(得分:2)
使用dplyr
?
library(dplyr);
df %>%
mutate(Elbow_soreness = ifelse(
Elbow == "<NA>",
NA,
sprintf("Elbow: %s (%s)", Elbow, Elbow_Details))) %>%
select(Patient_ID, Elbow_soreness);
# Patient_ID Elbow_soreness
#1 A <NA>
#2 B <NA>
#3 C <NA>
#4 D Elbow: Pain on One Side (Pain on my right)
#5 E <NA>
或在基地R:
df$Elbow_soreness <- ifelse(
df$Elbow == "<NA>",
NA,
sprintf("Elbow: %s (%s)", df$Elbow, df$Elbow_Details));
df[, c(1, 4)];
df <- read.table(text =
"Patient_ID Elbow Elbow_Details
A NA NA
B NA NA
C NA NA
D 'Pain on One Side' 'Pain on my right'
E NA NA", header = T)
要解决缺少Elbow_soreness
条目的评论和帐户,您可以使用两个嵌套ifelse
条件:
df <- read.table(text =
"Patient_ID Elbow Elbow_Details
A NA NA
B NA NA
C NA NA
D 'Pain on One Side' 'Pain on my right'
E 'Pain on One Side' NA
F NA NA", header = T)
library(dplyr);
df %>%
mutate(Elbow_soreness = ifelse(
is.na(Elbow),
NA,
ifelse(
is.na(Elbow_Details),
sprintf("Elbow: %s", Elbow),
sprintf("Elbow: %s (%s)", Elbow, Elbow_Details)))) %>%
select(Patient_ID, Elbow_soreness);
# Patient_ID Elbow_soreness
#1 A <NA>
#2 B <NA>
#3 C <NA>
#4 D Elbow: Pain on One Side (Pain on my right)
#5 E Elbow: Pain on One Side
#6 F <NA>