首页 文章

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

提问于
浏览
0

我是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 < - dataset [1]

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

任何有关代码的帮助或更好的主意都要感谢!

编辑

对于第二个输出错误

df_weighted_graph [1,] $ name < - dataset [1]

这是因为在read.csv命令中错过了争论stringsAsFactors = False .

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

read.csv(path_file,stringsAsFactors = FALSE)

1 回答

  • 0

    使用表格功能 .

    table(data$value)
    

相关问题