使用特定字符串在数据集中保留观测值-R
我正在尝试执行以下操作: 我有:使用特定字符串在数据集中保留观测值-R,r,string,R,String,我正在尝试执行以下操作: 我有: v1我想这就是你想要的: library(stringr) df <- data.frame(v1 = c("Persons Name <personsemail@email.com>","person 2 <person2@email.com>","person4",NA,"person5","Random Name <randomname@email.com>"), string
v1我想这就是你想要的:
library(stringr)
df <- data.frame(v1 = c("Persons Name <personsemail@email.com>","person 2 <person2@email.com>","person4",NA,"person5","Random Name <randomname@email.com>"),
stringsAsFactors = FALSE)
df$v2 <- str_extract(df$v1, "<(.*)>") #Extracts text from "<" through ">"
df$v2 <- str_replace_all(df$v2 , c("<|>"), "") #Replaces "<" or ">" with ""
df <- na.omit(df) #Omits's rows with NA from the entire df. Use a different approach if you have NA in OTHER columns.
# v1 v2
#1 Persons Name <personsemail@email.com> personsemail@email.com
#2 person 2 <person2@email.com> person2@email.com
#6 Random Name <randomname@email.com> randomname@email.com
库(stringr)
df我想这就是你想要的:
library(stringr)
df <- data.frame(v1 = c("Persons Name <personsemail@email.com>","person 2 <person2@email.com>","person4",NA,"person5","Random Name <randomname@email.com>"),
stringsAsFactors = FALSE)
df$v2 <- str_extract(df$v1, "<(.*)>") #Extracts text from "<" through ">"
df$v2 <- str_replace_all(df$v2 , c("<|>"), "") #Replaces "<" or ">" with ""
df <- na.omit(df) #Omits's rows with NA from the entire df. Use a different approach if you have NA in OTHER columns.
# v1 v2
#1 Persons Name <personsemail@email.com> personsemail@email.com
#2 person 2 <person2@email.com> person2@email.com
#6 Random Name <randomname@email.com> randomname@email.com
库(stringr)
df如果可以排除“NA”条目,则可以使用以下方法
df <- as.data.frame(v1)
df$v2 <- as.person(v1)$email
df如果可以排除“NA”条目,则可以使用以下方法
df <- as.data.frame(v1)
df$v2 <- as.person(v1)$email
df您可以先使用对v1
进行子集设置!is.na(v1)
,然后用将其子集!sappy(v2,is.null)
可以在你有电子邮件的地方找到它们
v2 <- as.person(v1)$email
cbind(v1[!is.na(v1)][!sapply(v2, is.null)], unlist(v2))
# [,1] [,2]
#[1,] "Persons Name <personsemail@email.com>" "personsemail@email.com"
#[2,] "person 2 <person2@email.com>" "person2@email.com"
#[3,] "Random Name <randomname@email.com>" "randomname@email.com"
v2您可以先使用对v1
进行子集设置!is.na(v1)
,然后用将其子集!sappy(v2,is.null)
可以在你有电子邮件的地方找到它们
v2 <- as.person(v1)$email
cbind(v1[!is.na(v1)][!sapply(v2, is.null)], unlist(v2))
# [,1] [,2]
#[1,] "Persons Name <personsemail@email.com>" "personsemail@email.com"
#[2,] "person 2 <person2@email.com>" "person2@email.com"
#[3,] "Random Name <randomname@email.com>" "randomname@email.com"
v2一个选项还可以将列表的名称设置为NA
已删除的'v1'(NA.omit
)的as.person
,并将其转换为两列data.frame
和stack
v2 <- na.omit(v1)
stack(setNames(as.person(v2)$email, v2))[2:1]
# ind values
#1 Persons Name <personsemail@email.com> personsemail@email.com
#2 person 2 <person2@email.com> person2@email.com
#3 Random Name <randomname@email.com> randomname@email.com
v2一个选项还可以将列表的名称设置为NA
已删除的'v1'(NA.omit
)的as.person
,并将其转换为两列data.frame
和stack
v2 <- na.omit(v1)
stack(setNames(as.person(v2)$email, v2))[2:1]
# ind values
#1 Persons Name <personsemail@email.com> personsemail@email.com
#2 person 2 <person2@email.com> person2@email.com
#3 Random Name <randomname@email.com> randomname@email.com
v2