Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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_Dataframe_Search - Fatal编程技术网

如何解析R中关键字的整个数据帧

如何解析R中关键字的整个数据帧,r,dataframe,search,R,Dataframe,Search,我有三个主列,其中包含使用ms、as或nn标记的值。我希望能够为每一行获取任何包含ms的内容,并将其与as进行比较 我尝试了grepl,子集,以及哪个。不确定比较这些的最佳方法是什么 例如: V16 V17 V18 nm:i:18 ms:i:40 as:i:40 ms:i:30 as:i:25 nn:i:0 ms:i:40 as:i:40 nn:i:0 或 应为(使用已排序的值创建新列): 我认为一个dplyr解决方案可能是最有效的: V19

我有三个主列,其中包含使用
ms
as
nn
标记的值。我希望能够为每一行获取任何包含
ms
的内容,并将其与
as
进行比较

我尝试了
grepl
子集
,以及
哪个
。不确定比较这些的最佳方法是什么

例如:

  V16      V17      V18
nm:i:18  ms:i:40  as:i:40
ms:i:30  as:i:25  nn:i:0
ms:i:40  as:i:40  nn:i:0

应为(使用已排序的值创建新列):


我认为一个
dplyr
解决方案可能是最有效的:

  V19      V20
ms:i:40  as:i:40
ms:i:30  as:i:25  
ms:i:40  as:i:40  
df%
聚集(id、变量、V16:V18)%>%
过滤器(grepl(“ms|as”,var))%>%
变异(newID=ifelse(grepl(“ms”,var),“V19”,“V20”))%>%
dplyr::选择(-id)%>%
价差(新ID,var)
ID V19 V20
1ms:i:40 as:i:40
2 ms:i:30 as:i:25
3ms:i:40 as:i:40

您的预期输出是什么?@akrun我想用ms的新列创建一个新的数据框,以便查看差异。
  V16     V17
ms:i:30 as:i:25
  V19      V20
ms:i:40  as:i:40
ms:i:30  as:i:25  
ms:i:40  as:i:40  
df <- data.frame(ID = 1:3, 
                 V16 = c("nm:i:18", "ms:i:30", "ms:i:40"), 
                 V17 = c("ms:i:40", "as:i:25", "as:i:40"), 
                 V18 = c("as:i:40", "nn:i:0", "nn:i:0"))

df %>% 
gather(id, var, V16:V18) %>% 
filter(grepl("ms|as", var)) %>% 
mutate(newID = ifelse(grepl("ms", var), "V19", "V20")) %>% 
dplyr::select(-id) %>% 
spread(newID, var)

  ID     V19     V20
1  1 ms:i:40 as:i:40
2  2 ms:i:30 as:i:25
3  3 ms:i:40 as:i:40