小编Nel*_*Gon的帖子

如何按多列对数据帧进行排序?

我想按多列对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)

sorting r dataframe r-faq

1266
推荐指数
19
解决办法
117万
查看次数

如何加入(合并)数据框(内部,外部,左侧,右侧)?

给出两个数据框:

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风格,加入?也就是说,我该怎么做:

  • 一个内连接df1df2:
    只返回行中左表在右表匹配的密钥.
  • 一个外连接df1df2:
    返回两个表中的所有行,从有右表中的匹配键左连接记录.
  • 甲 …

merge join r dataframe r-faq

1155
推荐指数
13
解决办法
108万
查看次数

如何在不重启R的情况下卸载软件包?

我想卸载一个包而不必重新启动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 package r-faq

496
推荐指数
9
解决办法
31万
查看次数

如何在R中找到字符串的长度?

如何在不拆分R的情况下找到字符串的长度(字符串中的字符数)?我知道如何找到列表的长度而不是字符串的长度.

那么Unicode字符串怎么样?如何在Unicode字符串中找到长度(以字节为单位)和字符数(符文,符号)?

相关问题:

string unicode r string-length

329
推荐指数
6
解决办法
30万
查看次数

如何按组加总变量?

假设我有两列数据.第一个包含诸如"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?

sorting r r-faq

320
推荐指数
14
解决办法
50万
查看次数

如何将数据从长格式转换为宽格式?

我无法重新排列以下数据框:

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和其他一些东西,但没有人可以做的工作.

r reshape r-faq

243
推荐指数
11
解决办法
18万
查看次数

使用字符串向量输入在dplyr中按多列分组

我试图将我对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已更新,因此可以使用更简单的解决方案.查看当前选择的答案.

r r-faq dplyr

145
推荐指数
7
解决办法
8万
查看次数

将数据框架从宽格式转换为长格式

将我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() …

r reshape dataframe r-faq

142
推荐指数
7
解决办法
9万
查看次数

关于太多公开数字的警告

在我创建许多数字的脚本中fix, ax = plt.subplots(...),我收到警告RuntimeWarning:已打开超过20个数字.通过pyplot接口(matplotlib.pyplot.figure)创建的数字将保留,直到明确关闭,并可能消耗太多内存.

但是,我不明白为什么我得到这个警告,因为保存图后fig.savefig(...),我删除它fig.clear(); del fig.我的代码中没有任何一点,我一次打开多个数字.尽管如此,我还是得到了关于太多公开数字的警告.这是什么意思/如何避免收到警告?

python matplotlib python-3.x

128
推荐指数
3
解决办法
7万
查看次数

如何学习R作为编程语言?

我想知道如何将R语言学习为"编程"语言,而不是将其学习为统计系统.我的问题是由于缺乏对诸如解析,评估等功能的理解而引起的,这些功能可能不会被具有"统计"说服力的R用户频繁使用.

编辑:我一直在探索像Rpy RSPerl rJava这样的工具,并希望(至少)能够理解促进R与其他编程语言通信的概念.

R(R-PHP,RApache等)的Web应用程序的可用性是我获得对R更深入,更结构化理解的另一个动机因素.

最后但并非最不重要,我希望能够编写R包,如果没有必要,这样的理解将是有益的.

r

104
推荐指数
4
解决办法
9万
查看次数