2017-12-28 13 views
0

したがって、2つの異なるデータセットがあり、列名に別のデータセットに列名が重複していないかどうかを確認しようとしています。たとえば、次のように1つのデータセットと他のデータセットに列名が存在するかどうかを確認

V4 V6 V1 V2 
NA NA NA NA 

として

V1 V2 V3 
1  2  3 

そして私は、第二のデータセットは、この

V4 V6 V1 V2 
NA NA 1 NA 

どこで唯一の最小値のようなものですので、それを作るしようとしています元のデータセットはそれ以降コピーされます。私はこの機能を使用しようとしました:

if(ncol((Session1t[grep(temp1, names(Session1t))])) != 0) 

しかし、これは動作していません。何が入力されても同じ値を返します。 if文を入力した後で、私が必要とする列のみをコピーするようにしています。私はそれを理解しました。if文を効果的に働かせることはできません。

+0

です'? – www

+0

「V1」のみがコピーされ、「V2」はコピーされないのはなぜですか? – Uwe

答えて

2

私たちは、列名と一致し、1

# Create example data frame D1 
D1 <- read.table(text = "V1 V2 V3 
1  2  3", 
       header = TRUE) 

# Create example data frame D2 
D2 <- read.table(text = "V4 V6 V1 V2 
NA NA NA NA", 
       header = TRUE) 

# Replace NA to 1 if column names match 
D2[1, ] <- ifelse(names(D2) %in% names(D1), 1, NA) 
D2 
# V4 V6 V1 V2 
# 1 NA NA 1 1 
1

それとも別のオプションのNAを交換するifelse%in%を使用することができる第二のデータフレームで `V2`は` NAなぜintersect

nm1 <- intersect(names(df1), names(df2)) 
df2[nm1] <- df1[nm1] 
関連する問題