如果 R 中的行是否为数字,则拆分数据框
Splitting a dataframe if rows are numeric or not in R
我有一个数据框(我们称它为 'df'),它由两列组成
Name Contact
A 34552325
B 423424
C 4324234242
D hello1@company.com
我想根据 "Contact" 列中的一行是否为数字将数据帧拆分为两个数据帧
预期输出:
Name Contact
A 34552325
B 423424
C 4324234242
和
Name Contact
D hello1@company.com
我厌倦了使用:
df$IsNum <- !(is.na(as.numeric(df$Contact)))
但这也将 "hello1@company.com" 分类为数字。
基本上,即使在 "Contact" 列中有一个非数值,代码也必须将其分类为非数值
您可以使用grepl
..
x <- " Name Contact
A 34552325
B 423424
C 4324234242
D hello1@company.com"
df <- read.table(text=x, header = T)
x <- df[grepl("^\d+$",df$Contact),]
y <- df[!grepl("^\d+$",df$Contact),]
x
# Name Contact
# 1 A 34552325
# 2 B 423424
# 3 C 4324234242
y
# Name Contact
# 4 D hello1@company.com
我们可以使用 grepl
创建一个分组变量(与@Avinash Raj 创建的方式相同),split
数据框创建 list
的 data.frames .
split(df, grepl('^\d+$', df$Contact))
我有一个数据框(我们称它为 'df'),它由两列组成
Name Contact
A 34552325
B 423424
C 4324234242
D hello1@company.com
我想根据 "Contact" 列中的一行是否为数字将数据帧拆分为两个数据帧
预期输出:
Name Contact
A 34552325
B 423424
C 4324234242
和
Name Contact
D hello1@company.com
我厌倦了使用:
df$IsNum <- !(is.na(as.numeric(df$Contact)))
但这也将 "hello1@company.com" 分类为数字。
基本上,即使在 "Contact" 列中有一个非数值,代码也必须将其分类为非数值
您可以使用grepl
..
x <- " Name Contact
A 34552325
B 423424
C 4324234242
D hello1@company.com"
df <- read.table(text=x, header = T)
x <- df[grepl("^\d+$",df$Contact),]
y <- df[!grepl("^\d+$",df$Contact),]
x
# Name Contact
# 1 A 34552325
# 2 B 423424
# 3 C 4324234242
y
# Name Contact
# 4 D hello1@company.com
我们可以使用 grepl
创建一个分组变量(与@Avinash Raj 创建的方式相同),split
数据框创建 list
的 data.frames .
split(df, grepl('^\d+$', df$Contact))