Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 确定文本是否包含在列中,然后与列标题连接_R - Fatal编程技术网

R 确定文本是否包含在列中,然后与列标题连接

R 确定文本是否包含在列中,然后与列标题连接,r,R,我正在收集一段时间以来患者的伤害调查数据。数据询问每位患者是否一侧或两侧疼痛,然后询问更多细节,这是一个文本框输入 我现在想1)测试每一位患者是否有文本,然后在每一列中2)如果文本确实存在,将身体区域的标题与侧边连接起来,然后在连接文本的结尾处用括号中的确切细节结束 我的数据库在70个变量上有500多个OB。我的数据的一个(小)示例是: head((RawData[,c(1,12:13)]), 5) Patient ID Elbow Elb

我正在收集一段时间以来患者的伤害调查数据。数据询问每位患者是否一侧或两侧疼痛,然后询问更多细节,这是一个文本框输入

我现在想1)测试每一位患者是否有文本,然后在每一列中2)如果文本确实存在,将身体区域的标题与侧边连接起来,然后在连接文本的结尾处用括号中的确切细节结束

我的数据库在70个变量上有500多个OB。我的数据的一个(小)示例是:

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>
head((原始数据[,c(1,12:13)]),5)
患者ID肘部详细信息
1A
2 B
3 C
4 D一侧疼痛右侧疼痛
5 E
我的预期产出将是:

  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>            
患者ID肘关节疼痛
1A
2 B
3 C
肘关节:一侧疼痛。(我右边疼)
5 E
这在R内可能吗?在Excel中,我可以简单地使用标题的文本并编写一个IF语句来评估文本是否存在。如果有,我将在下一列中连接文本。我希望使用R,考虑到我的数据库有多大,并且我使用它进行分析,所以任何帮助都将不胜感激


多谢各位

使用
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>

使用
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>

这是伟大的工作,我唯一的问题是,如果没有评论在“肘关节疼痛”的NA仍然打印在“肘关节详细信息”列。考虑到上面的例子,如果患者ID=“D”的“肘关节详细信息”下有NA,那么“肘关节疼痛”将读为:肘关节:一侧疼痛。不适用。@user2716568我做了一些更改,请查看我的更新答案。太好了,这是一个很棒的帮助。非常感谢你!这是伟大的工作,我唯一的问题是,如果没有评论在“肘关节疼痛”的NA仍然打印在“肘关节详细信息”列。考虑到上面的例子,如果患者ID=“D”的“肘关节详细信息”下有NA,那么“肘关节疼痛”将读为:肘关节:一侧疼痛。不适用。@user2716568我做了一些更改,请查看我的更新答案。太好了,这是一个很棒的帮助。非常感谢你!
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)
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>