Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String - Fatal编程技术网

R 识别变量中所有项目中的通用文本

R 识别变量中所有项目中的通用文本,r,string,R,String,是否有一个函数可以在我的变量中查找公共文本? 示例数据 V1 <- c("Age = 18-24", "Age = 25-34","Age = 35-44","Age = 45-54","Age = 55+") V2 <- c("Social Grade A","Social Grade B","Social Grade D"

是否有一个函数可以在我的变量中查找公共文本? 示例数据

V1 <- c("Age = 18-24", "Age = 25-34","Age = 35-44","Age = 45-54","Age = 55+")
V2 <- c("Social Grade A","Social Grade B","Social Grade D","Social Grade E","Social Grade F")
V3 <- c("How often do you do X? - 1 times","How often do you do X? - 2 times","How often do you do X? - 3 or more")

V1我建议使用PTQXC软件包中的LCSn功能

下面代码的解释:
我使用
tibble
-包中的
lst
-函数轻松创建输入数据的命名列表(V1、V2、Vn)。然后
lappy()
此列表上的
LCSn()
-函数,并使用'list2env()
将结果列表的内容传递给全局环境 (更改名称后,您将覆盖源数据!)

library( PTXQC )
library( tibble )

L <- lapply( tibble::lst( V1, V2, V3 ), PTXQC::LCSn )
# $V1
# [1] "Age = "
# $V2
# [1] "Social Grade "
# $V3
# [1] "How often do you do X? - "

names(L) <- paste0( names(L), "_text")
list2env( L, .GlobalEnv )
库(PTXQC)
图书馆(tibble)

L我建议使用PTQXC包中的LCSn功能

下面代码的解释:
我使用
tibble
-包中的
lst
-函数轻松创建输入数据的命名列表(V1、V2、Vn)。然后
lappy()
此列表上的
LCSn()
-函数,并使用'list2env()
将结果列表的内容传递给全局环境 (更改名称后,您将覆盖源数据!)

library( PTXQC )
library( tibble )

L <- lapply( tibble::lst( V1, V2, V3 ), PTXQC::LCSn )
# $V1
# [1] "Age = "
# $V2
# [1] "Social Grade "
# $V3
# [1] "How often do you do X? - "

names(L) <- paste0( names(L), "_text")
list2env( L, .GlobalEnv )
库(PTXQC)
图书馆(tibble)

L这里有一个循环,从最短字符串的末尾开始,检查所有条目是否匹配(即唯一值的长度为1),从末尾去掉一个字母,直到匹配为止

find_common_start <- function(strings) {
  max_length = min(nchar(strings))
  for(len in max_length:1) {
    if(length(unique(substr(strings, start = 1, stop = len))) == 1) {
      return(substr(strings[[1]], start = 1, stop = len))
    }
  }
}

这里有一个循环,从最短字符串的末尾开始,检查所有条目是否匹配(即唯一值的长度为1),从末尾删除一个字母,直到匹配为止

find_common_start <- function(strings) {
  max_length = min(nchar(strings))
  for(len in max_length:1) {
    if(length(unique(substr(strings, start = 1, stop = len))) == 1) {
      return(substr(strings[[1]], start = 1, stop = len))
    }
  }
}

这些是唯一的模式吗?如果要导入调查数据,请检查特定于提供商的包。例如,
qualtRics
软件包使得从qualtRics调查中导入数据变得容易,并且还有一些其他调查服务的软件包。在每个变量中,文本的公共部分始终位于左侧。调查问卷通常采用“问题-文本-然后回答”的形式,因此常见部分的长度各不相同。公共文本没有标准的端点。有些可以是“?”或“-”或其他方式,因此我无法使用这种方式获得该职位。这些是唯一的模式吗?如果您要导入调查数据,请检查特定于提供商的包。例如,
qualtRics
软件包使得从qualtRics调查中导入数据变得容易,并且还有一些其他调查服务的软件包。在每个变量中,文本的公共部分始终位于左侧。调查问卷通常采用“问题-文本-然后回答”的形式,因此常见部分的长度各不相同。公共文本没有标准的端点。有些可以是“?”或“-”或其他方式,所以我不能用这种方式得到这个职位。我相信这可以做得更简洁。有什么建议吗?很好的解决方案。我已经测试过了,在我的水平上,我也差不多能理解发生了什么。我相信这可以做得更简洁。有什么建议吗?很好的解决方案。我已经测试过了,在我的水平上,我也差不多能理解发生了什么。很多感谢:如果向量中的所有条目都相同。。。因此,在V1中,所有条目都是
“Age=18-24”
,您将得到确切的字符串作为LCS。。(这也是我相信@JonSpring的解决方案的情况。感谢大家的提醒,如果所有项都相同,这正是我所期望的。许多感谢:如果向量中的所有项都相同……那么在V1中,所有项都是
“Age=18-24”
,您将得到作为LCS的确切字符串。)。。(这也是我相信@JonSpring的解决方案的情况。谢谢你的提醒,如果所有项目都相同,这正是我所期望的。非常感谢