考虑元素的顺序计算数据帧中值的出现次数

时间:2016-09-29 21:26:31

标签: r counting

我是R的新手,我遇到了这个问题:我需要计算数据框中值的出现次数,但要考虑顺序。

示例:

这是我的数据框,有一列

Value     
(http_inspect) BARE BYTE UNICODE ENCODING
(http_inspect) BARE BYTE UNICODE ENCODING
(http_inspect) BARE BYTE UNICODE ENCODING
WEB-MISC Chunked-Encoding transfer attempt
WEB-MISC Chunked-Encoding transfer attempt
(http_inspect) BARE BYTE UNICODE ENCODING
(http_inspect) BARE BYTE UNICODE ENCODING
WEB-MISC Chunked-Encoding transfer attempt
WEB-MISC Chunked-Encoding transfer attempt
WEB-MISC Chunked-Encoding transfer attempt

所以,我需要计算并将其保存在新的数据框中

Value                                          Frequency
(http_inspect) BARE BYTE UNICODE ENCODING          3
WEB-MISC Chunked-Encoding transfer attempt         2
(http_inspect) BARE BYTE UNICODE ENCODING          2
WEB-MISC Chunked-Encoding transfer attempt         3

到目前为止,我没有找到解决我问题的方法,所以我对此进行了编码:

# data frame with one column 
dataset <- read.csv(path_file)

# new data frame to save name and frequency
df_weighted_graph <- data.frame(
name=character(),
frequency=numeric(),
stringsAsFactors=FALSE
)

# Variables
frequency <- 1
index <- 1

# Inicialize first position
df_weighted_graph[1,]$name <- dataset[1]
df_weighted_graph$[1,]frequency <- frequency

for(i in 1:length(dataset)-1)
{
   if(dataset[i] == dataset[i+1])
   {
      frequency <- frequency + 1
   }
   else{

     #Update frequency
     df_weighted_graph[index,]$frequency <- frequency

     index <- index + 1
     frequency <- 1

     # New element
     df_weighted_graph[index,]$name <- dataset[i]
     df_weighted_graph[index,]$frequency <- frequency
   }
}

它显示了一些错误消息:

  

if(dataset [i] == dataset [i + 1]){:参数长度为零

时出错

我无法将其作为字符串传递

  

df_weighted_graph [1,] $ name&lt; - dataset [1]

它保存为数字,而不是数据集中的名称。

感谢您对代码或更好的想法的任何帮助!

修改

对于第二个输出错误

  

df_weighted_graph [1,] $ name&lt; - dataset [1]

这是因为在read.csv命令中遗漏了争论stringsAsFactors = False。

所以,解决这个问题应该是

read.csv(path_file,stringsAsFactors = FALSE)

1 个答案:

答案 0 :(得分:0)

使用表格功能。

table(data$value)