首页 > 解决方案 > 如何匹配R中的字符变化

问题描述

我在 R 中有以下提到的数据框:

ID     source_field_1     field_1      source_field_3     field_3
ER-1   AC45U              CD34I        1992-01-23         23/01/1992
ER-2   AB15X                           1971-01-23         23/1/1971
ER-3   DB22U              AC22Z        1962-11-13         3/11/1962
ER-4   CF12R              BA23D        1992-01-23         23/01/1992

我需要按从列source_field_1field_1、从 A 到 Z 以及从 0 到 9 的字符变化计数来分组。

所需输出:

source_field_1      A     B     C     D     E . . . Z
A                               1
B                               1
C                         1           1
D                   1
E
F                   1
.
.                                     1
.                                                  1
Z

数字字符以及 和 都需要相同的field_1结构field_3

标签: rdataframedplyr

解决方案


df1 <- na.omit(df)

create <- function(from,to,nm)
{
  s <- sprintf("[^%s]",paste0(nm,collapse = ""))
  from <- unlist(strsplit(gsub(s,"",from),""))
  to <- unlist(strsplit(gsub(s,"",to),""))
  table(from,to)
}

create(df1$source_field_1,df1$field_1,0:9)
    to
from 2 3 4
   1 1 0 0
   2 2 1 0
   4 0 1 0
   5 0 0 1
create(df1$source_field_1,df1$field_1,LETTERS)
    to
from A B C D I Z
   A 0 0 1 0 0 0
   B 0 0 1 0 0 0
   C 0 1 0 1 0 0
   D 1 0 0 0 0 0
   F 1 0 0 0 0 0
   R 0 0 0 1 0 0
   U 0 0 0 0 1 1

推荐阅读