小编vat*_*rov的帖子

正则表达式有条件地查找和替换

我需要用字符串B替换字符串A,只有当字符串A是整个单词(例如"MECH")时,我不想在A是较长字符串的一部分时进行替换(例如"MECHANICAL") .到目前为止,我有一个grepl(),它检查字符串A是否是一个完整的字符串,但我无法弄清楚如何进行替换.我添加了一个ifelse(),当grep()返回TRUE时,想要更换gsub(),否则不要替换.有什么建议?请参阅下面的代码.谢谢.

aa <- data.frame(type = c("CONSTR", "MECH CONSTRUCTION", "MECHANICAL CONSTRUCTION MECH", "MECH CONSTR", "MECHCONSTRUCTION"))

from <- c("MECH", "MECHANICAL", "CONSTR",  "CONSTRUCTION")
to <- c("MECHANICAL", "MECHANICAL", "CONSTRUCTION", "CONSTRUCTION")

gsub2 <- function(pattern, replacement, x, ...) {
  for(i in 1:length(pattern)){
    reg <- paste0("(^", pattern[i], "$)|(^", pattern[i], " )|( ", pattern[i], "$)|( ", pattern[i], " )")
    ifelse(grepl(reg, aa$type),
           x <- gsub(pattern[i], replacement[i], x, ...),
           aa$type)
  }
  x
}

aa$title3 <- gsub2(from, to, aa$type)
Run Code Online (Sandbox Code Playgroud)

regex r

5
推荐指数
1
解决办法
136
查看次数

如何在R中通过状态创建分层样本

如何使用"采样"包在R中创建分层样本?我的数据集有355,000个观测值.代码在最后一行工作正常.下面是我写的代码,但我总是得到以下消息:"sort.list(y)中的错误:'x'必须是'sort.list'的原子'你在列表上调用了'sort'吗?"

请不要指向Stackoverflow上的旧消息.我研究了它们,但一直无法使用它们.谢谢.

## lpdata file has 355,000 observations
# Exclude Puerto Rico, Virgin Islands and Guam
sub.lpdata<-subset(lpdata,"STATE" != 'PR' | "STATE" != 'VI' | "STATE" != 'GU')

## Create a 10% sample, stratified by STATE
sort.lpdata<-sub.lpdata[order(sub.lpdata$STATE),]
tab.state<-data.frame(table(sort.lpdata$STATE))
size.strata<-as.vector(round(ceiling(tab.state$Freq)*0.1))

s<-strata(sort.lpdata,stratanames=sort.lpdata$STATE,size=size.strata,method="srswor")}
Run Code Online (Sandbox Code Playgroud)

r random-sample

4
推荐指数
2
解决办法
1万
查看次数

如何使用多个排除对数据集进行子集化?

如何在单个向量中组合所有状态名称,而不是单独列出所有逻辑排除?我在CRAN网站上发现了函数%notin%,但R不承认是一个合法的函数.

indata <- indata[which(indata$STATE != "GU" & indata$STATE != "WY" &
                       indata$STATE != "KS" & indata$STATE != "ME" &
                       indata$STATE != "MT" & indata$STATE != "ND" &), ]
Run Code Online (Sandbox Code Playgroud)

谢谢.

r

4
推荐指数
1
解决办法
509
查看次数

标签 统计

r ×3

random-sample ×1

regex ×1