2016-08-17 6 views
1

I次のデータフレームがあります。2列の最初の文字が一致した行を返すようにし、2つの行が一致しないdplyrを使用して

df <- structure(list(traffic_Count_Street = c("16th St", "17th St", 
             "Agnes St", "Ayers St", "Ayers St", "Ayers St", "Ayers St", "Baldwin Blvd", 
             "Baldwin Blvd", "Baldwin Blvd","S Brahma Blvd"), 
        unit_Street = c("Baldwin Blvd", "Baldwin Blvd", "Baldwin Blvd", "Baldwin Blvd", "Baldwin Blvd", 
         "Baldwin Blvd", "Baldwin Blvd", "Baldwin Blvd", "Baldwin Blvd", 
        "Baldwin Blvd","S 14th St")), .Names = c("traffic_Count_Street", "unit_Street" 
        ), row.names = c(NA, 11L), class = "data.frame") 

    traffic_Count_Street unit_Street 
1    16th St Baldwin Blvd 
2    17th St Baldwin Blvd 
3    Agnes St Baldwin Blvd 
4    Ayers St Baldwin Blvd 
5    Ayers St Baldwin Blvd 
6    Ayers St Baldwin Blvd 
7    Ayers St Baldwin Blvd 
8   Baldwin Blvd Baldwin Blvd 
9   Baldwin Blvd Baldwin Blvd 
10   Baldwin Blvd Baldwin Blvd 
11  S Brahma Blvd S 14th St 

を、私はどちらかの二つの列が何行を返したいです私は、次のしているが、私はその正しい場合は確認していない

traffic_Count_Street unit_Street 
1  S Brahma Blvd S 14th St 

:一致しない各行、または各列のちょうど最初の文字のために一致していませ

結果は次のようになります。

require(dplyr) 
result = df%>% 
    filter(traffic_Count_Street != unit_Street & traffic_Count_Street[1] == unit_Street[1]) 
+1

おそらく、ここに示した入力例の出力を表示する必要があります。また、最近の編集の後、サンプル入力は "破損したデータフレーム"という警告を表示しますので、おそらく間違いがあります。 – Frank

答えて

2

我々は、各列の最初の文字を抽出するsubstrを使用することができ、OPコードの中の他の比較と一緒に(==)とfilter行を比較します。

df %>% 
    filter(substr(traffic_Count_Street, 1, 1) == substr(unit_Street, 1, 1) & 
      traffic_Count_Street != unit_Street) 
# traffic_Count_Street unit_Street 
#1  S Brahma Blvd S 14th St 

または使用data.table

setDT(df)[df[,Reduce(`!=`, .SD) & substr(.SD[[1]],1,1) == substr(.SD[[2]], 1, 1)]] 
# traffic_Count_Street unit_Street 
#1:  S Brahma Blvd S 14th St 

またはその糖構文FOT data.tableを使用してbase R

subset(df, substr(traffic_Count_Street, 1, 1) == substr(unit_Street, 1, 1) &    
      traffic_Count_Street != unit_Street) 
+0

最終的な答えはdf%>% になります(substr(traffic_Count_Street、1,1)== substr(unit_Street、1、1)&traffic_Count_Street!= unit_Street)? – DataTx

+1

@DataTx私はあなたのタイトル、説明、およびコードも混乱しました。そのコードを使用すると、この例の行は一致しません。 – akrun

2

を使用して:

library(data.table) 
setDT(dat)[substr(traffic_Count_Street, 1, 1) == substr(unit_Street, 1, 1) & 
     traffic_Count_Street != unit_Street] 

# traffic_Count_Street unit_Street 
# 1:  S Brahma Blvd S 14th St 
関連する問題