我有一个数据框(我们称之为'df')它由两列
组成 Name Contact
A 34552325
B 423424
C 4324234242
D hello1@company.com
我想根据“联系人”列中的行是否为数字将数据框拆分为两个数据框
预期产出:
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”列中只有一个非数字值,那么代码必须将其归类为非数字
答案 0 :(得分:2)
您可以使用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
答案 1 :(得分:1)
我们可以创建一个分组变量grepl
(与@Avinash Raj创建的方式相同),split
数据框,用于创建list
data.frames。
split(df, grepl('^\\d+$', df$Contact))