2016-09-29 37 views
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 
    } 
} 

它显示了一些错误消息:

错误如果(数据集[I] ==数据集[I + 1]){:参数是长度的零

,我不能够通过这个作为字符串

df_weighted_graph [1] $命名< - 数据集[1]

它SAV es作为数字而不是数据集中的名称。

任何帮助代码或更好的主意是感激!

编辑

对于第二输出误差

df_weighted_graph [1] $命名< - 数据集[1]

这是因为错过了争论stringsAsFactors = false在读.csv命令。

因此,要解决这应该是

read.csv(path_file,stringsAsFactors = FALSE)

+0

您是否管理和尝试表函数? – Ansjovis86

回答

0

使用表功能。

table(data$value) 
+0

对不起,我迟到的答复..在这种情况下表不会工作。有了表格,它将把具有相同价值的tuplas放在一起,从而减少订单。不过谢谢你:) –