2017-12-06 10 views
1

Rにインポートされたcsvファイルがあり、その列に特定の文字が含まれていない行をフィルタリングする必要があります。私はサブセットとdplyrの両方を試してみましたが、どちらも列名を生成しますが、空の行を生成します。列には私が探している手紙が含まれているので、行が空である理由を理解できません。 これは私が私のデータセットにヘッド関数を呼び出すときに私が得るものです:Rデータフレームをフィルタリングすると空の行が作成される

head(dbbt) 
    X.Focal_DB. X.Effect_size. X.Variance.   X.Study. X.BT. 
1   165  -0.1931 0.0132000  'Agrawal_1998' 'B' 
2   21  -1.4414 0.1938000  'Agrawal_1999' 'B' 
3   19  -3.1642 0.2402559  'Agrawal_1999' 'B' 
4   19  -1.0272 0.0731000 'Agrawal_1999-2000' 'B' 

(COLNAMESはX.でインポートそれらの周りに、彼らは含まれていませんwhy-私は把握することはできません。任意の禁断の文字)

私は試してみてください。

dbbtjustb <- subset(dbbt, X.BT. == "B") 

私が手:

head(dbbtjustb) 
[1] X.Focal_DB. X.Effect_size. X.Variance. X.Study.  
[5] X.BT.   
<0 rows> (or 0-length row.names) 

私が試したとき:

dbbt %>% 
    select(X.F_DietBreadth., X.Effect_size., X.variance., X.Bottom_up_top_down.) %>% 
    filter(X.Bottom_up_top_down. == "B") 

私は同じことを持っていました。助けてください!

編集:構造(それは巨大だったので、これは、私の元のデータセットではありません)

structure(list(X.Focal_DB. = c(31L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 8L, 1L, 1L, 1L, 1L, 2L, 6L, 126L, 22L, 126L, 27L), X.Effect_size. = c(-0.0951, 
0.4797, -0.1705, 0.713, -0.2661, -0.6614, -1.5941, -2.1892, -0.2133, 
-0.2183, -0.0275, -0.268, -5.0499, -3.2934, -0.9469, 0.6316, 
2.236, 0.1724, 1.6541, -1.5496), X.Variance. = c(0.1006223807, 
0.0468390134, 0.0124, 0.014674063, 0.1385, 0.15, 0.3866, 0.4706, 
0.1025, 0.3688, 0.1354, 0.1444, 0.1641758772, 0.0849100448, 0.0783, 
0.040866755, 0.1814043974, 0.0535, 0.1503, 0.0999), X.Study. = structure(c(1L, 
2L, 3L, 4L, 6L, 6L, 5L, 5L, 7L, 8L, 9L, 9L, 10L, 10L, 11L, 12L, 
13L, 14L, 15L, 16L), .Label = c("'Bergeson & Messina_1997'", 
"'Bergeson & Messina_1997- 1998'", "'Cronin & Abrahamson_1999'", 
"'Dechert & Ulber_2004'", "'Denno_et_al. 2000'", "'Denno & Roderick_1992'", 
"'Dorn_et_al. 2003'", "'Evans & England_1996'", "'Ferrenberg & Denno_2003'", 
"'Finch & Jones_1989'", "'Floate & Whitham_1994'", "'Formusoh_et_al. 1992'", 
"'Forrest_1971'", "'Fritz_1983'", "'Gange & Brown_1989'", "'Gianoli_2000'" 
), class = "factor"), X.BT. = structure(c(2L, 3L, 2L, 2L, 2L, 
2L, 4L, 2L, 3L, 4L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L), .Label = c("'ants'", 
"'B'", "'NA'", "'T'"), class = "factor")), .Names = c("X.Focal_DB.", 
"X.Effect_size.", "X.Variance.", "X.Study.", "X.BT."), class = "data.frame", row.names = c(NA, 
-20L)) 
+0

を使用して

> unique(df$X.BT.) [1] 'B' 'NA' 'T' 'ants' 

..私はあなたのデータに 'dput()を使用して'と構造を掲示することをお勧め再現可能な例を私たちに提供してください –

答えて

2

実際のエントリでは、"'B'"でサブセットする必要があることを意味しており、'B'です。 dplyr

> filter(df, X.BT. == "'B'") 
    X.Focal_DB. X.Effect_size. X.Variance.     X.Study. X.BT. 
1   31  -0.0951 0.10062238 'Bergeson & Messina_1997' 'B' 
2   1  -0.1705 0.01240000 'Cronin & Abrahamson_1999' 'B' 
3   1   0.7130 0.01467406  'Dechert & Ulber_2004' 'B' 
4   1  -0.2661 0.13850000 'Denno & Roderick_1992' 'B' 
5   1  -0.6614 0.15000000 'Denno & Roderick_1992' 'B' 
6   1  -2.1892 0.47060000  'Denno_et_al. 2000' 'B' 
7   1  -0.0275 0.13540000 'Ferrenberg & Denno_2003' 'B' 
8   1  -0.2680 0.14440000 'Ferrenberg & Denno_2003' 'B' 
9   1  -5.0499 0.16417588  'Finch & Jones_1989' 'B' 
10   1  -3.2934 0.08491004  'Finch & Jones_1989' 'B' 
11   6   0.6316 0.04086675  'Formusoh_et_al. 1992' 'B' 
12   126   2.2360 0.18140440    'Forrest_1971' 'B' 
13   126   1.6541 0.15030000  'Gange & Brown_1989' 'B' 
14   27  -1.5496 0.09990000    'Gianoli_2000' 'B' 
関連する問題