R中第一个空格后的substr中文字符串

发布于 2025-01-17 23:53:44 字数 1234 浏览 3 评论 0原文

如何提取空格后的汉字?

原始数据如下:

10:36   不願做奴隸的人們    然後看你有沒有在時間內申覆。
10:37   千里之外    真的很無奈
10:37   不願做奴隸的人們    如果五天內你沒注意信心,表示你默認。

我需要的数据是:

不願做奴隸的人們
千里之外
不願做奴隸的人們

我使用的代码是:

filedata <- scan(file = ,what = "",sep = "\n",encoding = "UTF-8")

#定义数据框和变量
data <- data.frame(user_name = c(),date = c(),date = c())
date <- vector(length=length(filedata)) 
time <- vector(length=length(filedata))
user_name <- vector(length=length(filedata))
text <- vector(length=length(filedata))

#截取用户名、时间和日期
pat1 = '[0-9]{4}/[0-9]{2}/[0-9]{2}'  #表示日期的正则表达式
pat2 = '[0-9]+:[0-9]+'               #表示时间的正则表达式
for(i in 1: length(filedata)){
  dt_pattern1 <- grepl(pat1,filedata[i]) #grepl函数识别每条记录中的日期部分
  dt_pattern2 <- grepl(pat2,filedata[i]) #grepl函数识别每条记录中的时间部分
  if(dt_pattern1 == TRUE){
    date[i] <- substr(filedata[i],1,10)
  } 
  if(dt_pattern2 == TRUE){
    time[i] <- substr(filedata[i],1,5)
    user_name[i] <- substr(filedata[i], 7, "\\s")
  }
}
data <- rbind(data, data.frame(Name = user_name,date = date,time = time))

我需要创建一个 Name 变量,但它有一条警告消息:

通过强制引入的 NA

有谁能帮忙调试一下吗?非常感谢!

How can I extract Chinese characters after a space?

The original data is below:

10:36   不願做奴隸的人們    然後看你有沒有在時間內申覆。
10:37   千里之外    真的很無奈
10:37   不願做奴隸的人們    如果五天內你沒注意信心,表示你默認。

The data that I need is:

不願做奴隸的人們
千里之外
不願做奴隸的人們

The code that I used is:

filedata <- scan(file = ,what = "",sep = "\n",encoding = "UTF-8")

#定义数据框和变量
data <- data.frame(user_name = c(),date = c(),date = c())
date <- vector(length=length(filedata)) 
time <- vector(length=length(filedata))
user_name <- vector(length=length(filedata))
text <- vector(length=length(filedata))

#截取用户名、时间和日期
pat1 = '[0-9]{4}/[0-9]{2}/[0-9]{2}'  #表示日期的正则表达式
pat2 = '[0-9]+:[0-9]+'               #表示时间的正则表达式
for(i in 1: length(filedata)){
  dt_pattern1 <- grepl(pat1,filedata[i]) #grepl函数识别每条记录中的日期部分
  dt_pattern2 <- grepl(pat2,filedata[i]) #grepl函数识别每条记录中的时间部分
  if(dt_pattern1 == TRUE){
    date[i] <- substr(filedata[i],1,10)
  } 
  if(dt_pattern2 == TRUE){
    time[i] <- substr(filedata[i],1,5)
    user_name[i] <- substr(filedata[i], 7, "\\s")
  }
}
data <- rbind(data, data.frame(Name = user_name,date = date,time = time))

I need to create a Name variable, but it has a warning message:

NAs introduced by coercion

Can anyone help to debug? Thank you very much!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

揽月 2025-01-24 23:53:44

如果您的数据是字符串的矢量,则可以将字符串拆分为任何空白空间,并在每个拆分字符串中提取第二个元素。

library(stringr)

user_name <- c(
  "10:36   不願做奴隸的人們    然後看你有沒有在時間內申覆。",
  "10:37   千里之外    真的很無奈",
  "10:37   不願做奴隸的人們    如果五天內你沒注意信心,表示你默認。"
)

str_split(user_name, "\\s+", simplify = T)[, 2]
[1] "不願做奴隸的人們" "千里之外"         "不願做奴隸的人們"

If your data is a vector of strings, you can split the strings by any white space, and extract the second element in each split string.

library(stringr)

user_name <- c(
  "10:36   不願做奴隸的人們    然後看你有沒有在時間內申覆。",
  "10:37   千里之外    真的很無奈",
  "10:37   不願做奴隸的人們    如果五天內你沒注意信心,表示你默認。"
)

str_split(user_name, "\\s+", simplify = T)[, 2]
[1] "不願做奴隸的人們" "千里之外"         "不願做奴隸的人們"
清风挽心 2025-01-24 23:53:44

假设您只想要用户名中的第一个单词,您可以在此处使用 sub()

user_name <- "不願做奴隸的人們    如果五天內你沒注意信心,表示你默認。"
first <- sub("(\\S+).*", "\\1", user_name)
first

Assuming you just want the first word from the username, you could use sub() here:

user_name <- "不願做奴隸的人們    如果五天內你沒注意信心,表示你默認。"
first <- sub("(\\S+).*", "\\1", user_name)
first
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文