有效地查找 r 中数据帧中不同行的列值计数
Efficiently finding the count of column values for distinct rows in a dataframe in r
假设我有一个数据框:
id value
1 "hi"
1 "hi"
1 "hi again"
1 "hi again"
2 "hello"
2 "hi"
现在我想获取 id 列中每个不同值的每个 value 的计数。输出就像
id value Freq
1 "hi" 2
1 "hi again" 2
2 "hello" 1
2 "hi" 1
我尝试为每个不同的 id 拆分第一个数据帧,并使用 table() 获取频率在 value 列上运行并稍后附加 id 列。此外,我最终在记忆中得到了很多数据帧。我只想知道我是否可以在不占用大量数据帧的情况下实现上述数据帧(因为我有将近 500 万行)。
假设您的 data.frame 被称为 df,使用 data.table:
library(data.table)
setDT(df)[ , .(Freq = .N), by = .(id, value)]
使用 dplyr:
libary(dplyr)
group_by(df, id, value) %>% summarise(Freq = n())
你应该选择这两个软件包之一(dplyr 或 data.table)并真正彻底地学习它。在长 运行 中,您可能会同时使用两者。但是从一个开始并真正理解它会对你有很大帮助。每次我使用 R 时,我几乎都会同时使用两者。
dplyr 对于初学者来说往往更容易,所以我会阅读数据科学的语法和图形下的 tutorial on it. This will help you forever. There is also a great video-tutorial which can be found on this site。
我个人更喜欢data.table,因为它更快更灵活。检查新的 HTML 插图和 PDF 插图 here。
假设我有一个数据框:
id value
1 "hi"
1 "hi"
1 "hi again"
1 "hi again"
2 "hello"
2 "hi"
现在我想获取 id 列中每个不同值的每个 value 的计数。输出就像
id value Freq
1 "hi" 2
1 "hi again" 2
2 "hello" 1
2 "hi" 1
我尝试为每个不同的 id 拆分第一个数据帧,并使用 table() 获取频率在 value 列上运行并稍后附加 id 列。此外,我最终在记忆中得到了很多数据帧。我只想知道我是否可以在不占用大量数据帧的情况下实现上述数据帧(因为我有将近 500 万行)。
假设您的 data.frame 被称为 df,使用 data.table:
library(data.table)
setDT(df)[ , .(Freq = .N), by = .(id, value)]
使用 dplyr:
libary(dplyr)
group_by(df, id, value) %>% summarise(Freq = n())
你应该选择这两个软件包之一(dplyr 或 data.table)并真正彻底地学习它。在长 运行 中,您可能会同时使用两者。但是从一个开始并真正理解它会对你有很大帮助。每次我使用 R 时,我几乎都会同时使用两者。
dplyr 对于初学者来说往往更容易,所以我会阅读数据科学的语法和图形下的 tutorial on it. This will help you forever. There is also a great video-tutorial which can be found on this site。
我个人更喜欢data.table,因为它更快更灵活。检查新的 HTML 插图和 PDF 插图 here。