0

2つの列で構成されるデータフレーム(「df」と呼びましょう)があります

 Name   Contact
 A      34552325
 B      423424
 C      4324234242
 D      hello1@company.com

「連絡先」列の行が数値であるかどうかに基づいて、データフレームを2つのデータフレームに分割したい

期待される出力:

 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」も数値として分類しました。

基本的に、「連絡先」列に数値以外の値が 1 つでもある場合、コードはそれを数値以外として分類する必要があります。

4

2 に答える 2

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
于 2015-10-27T10:16:18.697 に答える
1

grepl(@Avinash Raj が作成した方法と同じ)、splitdata.frames を作成するためのデータフレームを使用して、グループ化変数を作成できますlist

split(df, grepl('^\\d+$', df$Contact))
于 2015-10-27T10:18:34.997 に答える