小编OAM*_*OAM的帖子

匹配两个向量并替换为字符串

存在以下问题:我有两个数据帧,我希望将数据帧data1中的一个向量与来自数据帧data2的向量进行匹配.

data1 <- data.frame(v1 = c("horse", "duck", "bird"), v2 = c(1,2,3))
data2 <- data.frame(v1 = c("car, horse, mouse", "duck, bird", "bird"))
Run Code Online (Sandbox Code Playgroud)

如果data2中的字符串匹配,则应将其替换为data1中对应的值v2.结果如下:

for(i in 1:nrow(data1)) data2[,1] <- gsub(data1[i,1], data1[i,2], data2[,1], fixed=T)
data2
Run Code Online (Sandbox Code Playgroud)

但是,有没有想法使用矢量化解决方案而不是for循环来创建具有大型数据集的更好性能?

提前致谢!

- 更新:

当我遇到这种情况时会发生什么,两个数据帧的长度不一样?

data2 <- data.frame(v1 = c("car, horse, mouse", "duck, bird","bird", "bird"))

当我使用此解决方案时:

data2$v1 <- mapply(sub, data1$v1, data1$v2, data2$v1)
Run Code Online (Sandbox Code Playgroud)

然后我收到以下警告消息:

1:在mapply中(sub,data1 $ v1,data1 $ v2,data2 $ v1):较长的参数不是长度较短的倍数2:在mapply中(sub,data1 $ v1,data1 $ v2,data2 $ v1):更长参数不是短的长度的倍数

但是,mgsub解决方案非常完美!谢谢!

replace r match

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

删除行中的重复字符串

以下问题:

我有数据框data1与变量包括几个条目:

data1 <- data.frame(v1 = c("test, test, bird", "bird, bird", "car"))
Run Code Online (Sandbox Code Playgroud)

现在我想删除每一行中的重复条目.结果应如下所示:

data1.final <- data.frame(v1 = c("test, bird", "bird", "car"))
Run Code Online (Sandbox Code Playgroud)

我试过这个:

data1$ID <- 1:nrow(data1)
data1$v1 <- as.character(data1$v1)

data1 <- split(data1, data1$ID)
reduce.words <- function(x) {
  d <- unlist(strsplit(x$v1, split=" "))
  d <- paste(d[-which(duplicated(d))], collapse = ' ')
  x$v1 <- d 
  return(x)
}
data1 <- lapply(data1, reduce.words)
data1 <- as.data.frame(do.call(rbind, data1))
Run Code Online (Sandbox Code Playgroud)

但是,这会产生空行,但第一行除外.有人想解决这个问题吗?

r duplicates collapse

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

R 中的土耳其语字符编码

有没有办法根据土耳其语更改R中的字符编码系统?

\n\n

我尝试在将 R 脚本保存为 iso-8859-9、windows-1254 或 latin5 时更改编码。最后的编码给了我最好的结果,但是当我重新加载 R 脚本时,并非所有字符都被正确保存。例如:

\n\n

原来的:

\n\n
h\xc3\xa2kimiyetinin\n\xc3\xa7\xc4\xb1k\xc4\xb1yor\n
Run Code Online (Sandbox Code Playgroud)\n\n

重新加载(第二个示例中的角色已被破坏):

\n\n
h\xc3\xa2kimiyetinin\n\xc3\xa7\xc3\xbdk\xc3\xbdyor\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人有想法吗?先感谢您!

\n

turkish encoding r

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

标签 统计

r ×3

collapse ×1

duplicates ×1

encoding ×1

match ×1

replace ×1

turkish ×1