我想按多列对data.frame进行排序.例如,对于下面的data.frame,我想按列z(降序)然后按列b(升序)排序:
dd <- data.frame(b = factor(c("Hi", "Med", "Hi", "Low"),
levels = c("Low", "Med", "Hi"), ordered = TRUE),
x = c("A", "D", "A", "C"), y = c(8, 3, 9, 9),
z = c(1, 1, 1, 2))
dd
b x y z
1 Hi A 8 1
2 Med D 3 1
3 Hi A 9 1
4 Low C 9 2
Run Code Online (Sandbox Code Playgroud) 给出两个数据框:
df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))
df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))
df1
# CustomerId Product
# 1 Toaster
# 2 Toaster
# 3 Toaster
# 4 Radio
# 5 Radio
# 6 Radio
df2
# CustomerId State
# 2 Alabama
# 4 Alabama
# 6 Ohio
Run Code Online (Sandbox Code Playgroud)
我怎样才能做数据库风格,即sql风格,加入?也就是说,我该怎么做:
我想卸载一个包而不必重新启动R(主要是因为重新启动R,因为我尝试了不同的,冲突的包令人沮丧,但可以想象这可以在一个程序中使用一个函数然后另一个 - 虽然命名空间引用可能是一个更好的主意用于此用途).
?library 没有显示任何可以卸载包的选项.
有一种建议是detach可以卸载包,但以下两个失败:
detach(vegan)
Run Code Online (Sandbox Code Playgroud)
错误
detach(vegan):无效name参数
detach("vegan")
Run Code Online (Sandbox Code Playgroud)
错误
detach("vegan"):无效name参数
那么如何卸载包呢?
如何在不拆分R的情况下找到字符串的长度(字符串中的字符数)?我知道如何找到列表的长度而不是字符串的长度.
那么Unicode字符串怎么样?如何在Unicode字符串中找到长度(以字节为单位)和字符数(符文,符号)?
相关问题:
假设我有两列数据.第一个包含诸如"First","Second","Third"等类别.第二个包含代表我看到"First"的次数的数字.
例如:
Category Frequency
First 10
First 15
First 5
Second 2
Third 14
Third 20
Second 3
Run Code Online (Sandbox Code Playgroud)
我想按类别对数据进行排序并对频率求和:
Category Frequency
First 30
Second 5
Third 34
Run Code Online (Sandbox Code Playgroud)
我怎么会在R?
我无法重新排列以下数据框:
set.seed(45)
dat1 <- data.frame(
name = rep(c("firstName", "secondName"), each=4),
numbers = rep(1:4, 2),
value = rnorm(8)
)
dat1
name numbers value
1 firstName 1 0.3407997
2 firstName 2 -0.7033403
3 firstName 3 -0.3795377
4 firstName 4 -0.7460474
5 secondName 1 -0.8981073
6 secondName 2 -0.3347941
7 secondName 3 -0.5013782
8 secondName 4 -0.1745357
Run Code Online (Sandbox Code Playgroud)
我想重塑它,以便每个唯一的"名称"变量是一个rowname,其中"值"作为沿该行的观察值,"数字"作为同名.有点像:
name 1 2 3 4
1 firstName 0.3407997 -0.7033403 -0.3795377 -0.7460474
5 secondName -0.8981073 -0.3347941 -0.5013782 -0.1745357
Run Code Online (Sandbox Code Playgroud)
我看melt,并cast和其他一些东西,但没有人可以做的工作.
我试图将我对plyr的理解转移到dplyr,但我无法弄清楚如何按多列分组.
# make data with weird column names that can't be hard coded
data = data.frame(
asihckhdoydkhxiydfgfTgdsx = sample(LETTERS[1:3], 100, replace=TRUE),
a30mvxigxkghc5cdsvxvyv0ja = sample(LETTERS[1:3], 100, replace=TRUE),
value = rnorm(100)
)
# get the columns we want to average within
columns = names(data)[-3]
# plyr - works
ddply(data, columns, summarize, value=mean(value))
# dplyr - raises error
data %.%
group_by(columns) %.%
summarise(Value = mean(value))
#> Error in eval(expr, envir, enclos) : index out of bounds
Run Code Online (Sandbox Code Playgroud)
将plyr示例翻译成dplyr-esque语法我错过了什么?
编辑2017:Dplyr已更新,因此可以使用更简单的解决方案.查看当前选择的答案.
将我data.frame从宽表转换为长表时遇到一些麻烦.目前它看起来像这样:
Code Country 1950 1951 1952 1953 1954
AFG Afghanistan 20,249 21,352 22,532 23,557 24,555
ALB Albania 8,097 8,986 10,058 11,123 12,246
Run Code Online (Sandbox Code Playgroud)
现在我想把它data.frame变成一个长期的data.frame.像这样的东西:
Code Country Year Value
AFG Afghanistan 1950 20,249
AFG Afghanistan 1951 21,352
AFG Afghanistan 1952 22,532
AFG Afghanistan 1953 23,557
AFG Afghanistan 1954 24,555
ALB Albania 1950 8,097
ALB Albania 1951 8,986
ALB Albania 1952 10,058
ALB Albania 1953 11,123
ALB Albania 1954 12,246
Run Code Online (Sandbox Code Playgroud)
我已经看过并尝试了它melt()的reshape()功能,因为有些人提出了类似的问题.但是,到目前为止我只得到凌乱的结果.
如果有可能我想用这个reshape() …
在我创建许多数字的脚本中fix, ax = plt.subplots(...),我收到警告RuntimeWarning:已打开超过20个数字.通过pyplot接口(matplotlib.pyplot.figure)创建的数字将保留,直到明确关闭,并可能消耗太多内存.
但是,我不明白为什么我得到这个警告,因为保存图后fig.savefig(...),我删除它fig.clear(); del fig.我的代码中没有任何一点,我一次打开多个数字.尽管如此,我还是得到了关于太多公开数字的警告.这是什么意思/如何避免收到警告?
我想知道如何将R语言学习为"编程"语言,而不是将其学习为统计系统.我的问题是由于缺乏对诸如解析,评估等功能的理解而引起的,这些功能可能不会被具有"统计"说服力的R用户频繁使用.
编辑:我一直在探索像Rpy RSPerl rJava这样的工具,并希望(至少)能够理解促进R与其他编程语言通信的概念.
R(R-PHP,RApache等)的Web应用程序的可用性是我获得对R更深入,更结构化理解的另一个动机因素.
最后但并非最不重要,我希望能够编写R包,如果没有必要,这样的理解将是有益的.