【发布时间】: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)
【问题讨论】:
-
你管理并尝试过表格功能吗?