如何解析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