2013-12-08 6 views
0

После того как я разобрать один HTML-файл, я получил что-то вроде этого, и я хотел бы рассчитывать частоту «» (3-й линии)R, отсчет частоты «»

html_1 

[1]"I'm working" 
[2]" " 
[3]"" 
[4]" " 

class(html_1) 
character 

Я хотел бы использовать табличную функцию для нормального фрейма данных, но как только я изменю это на кадр данных, он станет таким, как показано ниже, поэтому я больше не могу различать «» и «».

html_2 <- as.data.frame(html_1) 
html_2 

I'm working 

Любые советы по подсчету "" ??

ответ

1

Выберите один:

sum(html_1 == "") 

sum(nchar(html_1) == 0) 
+0

Спасибо! Очень краткий ответ =) – user1486507

2

Это в основном опирается на @ ответ Романа, но (1) показывает другой способ «увидеть» пространство и (2) показывает вам другую идею для подведения итогов:

html_1 <- c("I'm working here", " ", "", " ", "No", NA, "") 
html_2 <- as.data.frame(html_1) 

print имеет quote аргумент который позволяет вам помещать кавычки вокруг столбцов, чтобы вы могли легче видеть начальные и конечные пробелы. Это тоже полезно.

print(html_2, quote = TRUE) 
#    html_1 
# 1 "I'm working here" 
# 2    " " 
# 3     "" 
# 4    " " 
# 5    "No" 
# 6     NA 
# 7     "" 

Табуляционного так просто, как ищет строку, которая выглядит как "":

html_2$html_1 == "" 
# [1] FALSE FALSE TRUE FALSE FALSE NA TRUE 
table(html_2$html_1 == "") 
# 
# FALSE TRUE 
#  4  2 

В качестве альтернативы, вы можете посчитать, сколько символов есть в каждом элементе, чтобы получить ту же информацию. Здесь 0, очевидно, представляет интерес (но мне не нравится, что NA засчитывается как два символа).

table(nchar(as.character(html_2$html_1))) 
# 
# 0 1 2 16 
# 2 2 2 1 
+0

Спасибо так много! Это было действительно полезно! – user1486507

2

Вы можете использовать регулярные выражения для поиска пустых строк:

html1 <- c("I'm working here", " ", "", " ") 
idx <- grepl("^$", html1) 
# [1] FALSE FALSE TRUE FALSE 

В приведенном выше коде, ^$ обозначает "". Количество пустых строк:

table(idx) 
# idx 
# FALSE TRUE 
#  3  1 
+0

Спасибо! Я не знал, что могу использовать регулярные выражения для "" – user1486507

Смежные вопросы