【问题标题】:Counting occurrences of a value in data frame considering the order of the elements考虑元素的顺序计算数据框中值的出现次数
【发布时间】:2016-09-29 21:26:31
【问题描述】:

我是 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

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

任何有关代码的帮助或更好的想法都非常感谢!

编辑

对于第二个输出错误

df_weighted_graph[1,]$name

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

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

read.csv(path_file, stringsAsFactors=FALSE)

【问题讨论】:

  • 你管理并尝试过表格功能吗?

标签: r counting


【解决方案1】:

使用表格功能。

table(data$value)

【讨论】:

  • 对不起,我的回复晚了.. 在那种情况下,表格将无法正常工作。使用 table 它会将具有相同价值的 tuplas 放在一起,从而丢失订单。不过还是谢谢你:)
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 2022-11-30
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多