【发布时间】:2018-10-17 10:19:06
【问题描述】:
假设我有一个这样的数据框:
df <- data.frame(First_Name=c("John","Alex","James","John","Alex","John","James"),
Last_Name = c("Smith","Smith","Jones","Jones","Johnson","Ryan","Murphy"),
Frequency = c(4,7,8,9,3,10,4))
First_Name Last_Name Frequency
1 John Smith 4
2 Alex Smith 7
3 James Jones 5
4 John Jones 9
5 Alex Johnson 3
6 John Ryan 10
7 James Murphy 4
我想将第一列(名字)仅折叠为唯一值,并根据其累积频率对名称进行排序。对于此示例,如果我们这样做并按降序排序,则顺序将是:John、James、Alex,因为它们各自的累积频率分别为 23、10 和 12。
来自 python 背景,我正在考虑将值存储在一个元组中,但我不确定 R 中是否有等价物(目前,我只熟悉向量)。
此外,如果我尝试仅从“First_Name”列中提取唯一值并将其存储在向量中:
unique(c(df$First_Name))
R 输出这个:
[1] 3 1 2
这似乎表明他们将名称转换为整数。
所以我的问题是:
1) 我将如何只获取唯一的名字并根据它们的累积值对它们进行排序?
2) 如果我尝试将名称存储在向量中,为什么 R 会将名称转换为整数?
【问题讨论】:
-
你得到数字是因为它们在内部是
factors;尝试data.frame(...,stringsAsFactors=FALSE)并重复。 (这是data.frame、read.csv和其他base-Rread.*函数使用的常用参数;许多人认为它应该默认为TRUE。)顺便说一句:试试sort(table(df$First_Name),decreasing=TRUE)。
标签: r sorting dataframe vector