我是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)
答案 0 :(得分:0)
使用表格功能。
table(data$value)