melt.data.frame的默认行为是返回"factor"类中的"variable"列.这是一个例子:
> head(airquality)
ozone solar.r wind temp month day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
> x = melt(head(airquality))
Using as id variables
> head(x)
variable value
1 ozone 41
2 ozone 36
3 ozone 12
4 ozone 18
5 ozone NA
6 ozone …Run Code Online (Sandbox Code Playgroud) 我在R中有一个看起来像这样的对象:
returns
2010-1-4 -0.015933327
2010-1-11 -0.015042868
2010-1-18 0.005350297
2010-1-25 -0.049324703
2010-2-1 -0.052674121
Run Code Online (Sandbox Code Playgroud)
我想把它变成:
date returns
1 2010-01-04 -0.0159333272
2 2010-01-11 -0.0150428685
3 2010-01-18 0.0053502965
4 2010-01-25 -0.0493247026
5 2010-02-01 -0.0526741206
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我data.frame喜欢这样的:
Col1 Col2 Col3 Col4 Col5 Col6
1 1982 0 0 -211 107 0
2 4412 0 989 0 296 0
3 0 -5051 0 -267 389 920
4 0 -2983 0 -215 0 1639
5 0 -1326 0 -861 0 0
6 3722 0 89 0 243 13349
Run Code Online (Sandbox Code Playgroud)
如何将负值更改为其绝对值?
我有一个看起来像这样的数据集,其中一列可以有四个不同的值:
dataset <- data.frame(out = c("a","b","c","a","d","b","c","a","d","b","c","a"))
Run Code Online (Sandbox Code Playgroud)
在R中,我想创建第二列,按顺序计算包含特定值的累计行数.因此输出列将如下所示:
out
1
1
1
2
1
2
2
3
2
3
3
4
Run Code Online (Sandbox Code Playgroud) 我有3个数据框(行:站点,列:物种名称)的站点内的物种丰富度.行号相同,但列号不同,因为并非所有物种都在所有三个数据帧中.我想将它们合并到一个数据框架中,总结出相同物种的丰富程度.例如:
data.frame1
Sp1 Sp2 Sp3 Sp4
site1 1 2 3 1
site2 0 2 0 1
site3 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
data.frame2
Sp1 Sp2 Sp4
site1 0 1 2
site2 1 2 0
site3 1 1 1
Run Code Online (Sandbox Code Playgroud)
data.frame3
Sp1 Sp2 Sp5 Sp6
site1 0 1 1 1
site2 1 1 1 5
site3 2 0 0 0
Run Code Online (Sandbox Code Playgroud)
我想拥有的是:
Sp1 Sp2 Sp3 Sp4 Sp5 Sp6
site1 1 4 3 3 1 1
site2 2 5 0 1 1 5
site3 4 …Run Code Online (Sandbox Code Playgroud) 有没有办法系统地选择数据框的最后一列?我希望能够将最后一列移动到第一列,但在移动时保持列的顺序.我需要一种方法来做到这一点,它不会列出使用子集的所有列(数据,选择= C(在新秩序中列出的所有列)),因为我将使用许多不同的数据帧.
这是一个示例,我想将最后两列移动到数据框的前面.它有效,但它很难看.
A = rep("A", 5)
B = rep("B", 5)
num1 = c(1:5)
num2 = c(36:40)
mydata2 = data.frame(num1, num2, A, B)
# Move A and B to the front of mydata2
mydata2_move = data.frame(A = mydata2$A, B = mydata2$B, mydata2[,1: (ncol(mydata2)-2)])
# A B num1 num2
#1 A B 1 36
#2 A B 2 37
#3 A B 3 38
#4 A B 4 39
#5 A B 5 40
Run Code Online (Sandbox Code Playgroud)
更改原始数据框中的列数会导致问题.这有效(见下文),但命名被抛弃了.为什么这两个例子表现不同?有没有更好的方法来做到这一点,并推广它?
mydata1_move = data.frame(A = …Run Code Online (Sandbox Code Playgroud) 我正在尝试清理一些输入错误的数据.变量的问题允许五个选项中的多个响应,编号为1到5.数据已按以下方式输入(这只是一个示例 - 实际数据中有更多变量和更多观察值帧):
data
V1
1 1, 2, 3
2 1, 2, 4
3 2, 3, 4, 5
4 1, 3, 4
5 1, 3, 5
6 2, 3, 4, 5
Run Code Online (Sandbox Code Playgroud)
以下是重新创建示例数据的一些代码:
data = data.frame(V1 = c("1, 2, 3", "1, 2, 4", "2, 3, 4, 5",
"1, 3, 4", "1, 3, 5", "2, 3, 4, 5"))
Run Code Online (Sandbox Code Playgroud)
我真正需要的是要处理的数据更多...二进制 - 就像一组"是/否"问题 - 输入一个看起来更像的数据框:
data
V1.1 V1.2 V1.3 V1.4 V1.5
1 1 1 1 NA NA
2 1 1 NA 1 NA
3 …Run Code Online (Sandbox Code Playgroud) 我在R中有我的数据表.我想合并具有相同的行customerID,然后连接其他合并列的元素.
我想离开这个:
title author customerID
1 title1 author1 1
2 title2 author2 2
3 title3 author3 1
Run Code Online (Sandbox Code Playgroud)
对此:
title author Group.1
1 title1, title3 author1, author3 1
2 title2 author2 2
Run Code Online (Sandbox Code Playgroud) sample <-
structure(list(GB05 = structure(c(22L, 34L, 26L, 2L), .Dim = 4L, .Dimnames = structure(list(
c("98", "100", "102", "106")), .Names = ""), class = "table"),
GB18 = structure(c(8L, 14L, 70L), .Dim = 3L, .Dimnames = structure(list(
c("173", "175", "177")), .Names = ""), class = "table"),
GB06 = structure(c(2L, 16L, 48L, 10L, 10L, 6L), .Dim = 6L, .Dimnames = structure(list(
c("234", "238", "240", "242", "244", "246")), .Names = ""), class = "table"),
GB27 = structure(c(2L, 28L, 2L, 2L, 4L, 3L, 2L, 2L, …Run Code Online (Sandbox Code Playgroud) 我有一个包含多个列的data.frame,它们都是字符类.所有值都是双引号,我想删除这些引号.
例
df1 df2
"1203" "Name1"
"2304" "Name2"
Run Code Online (Sandbox Code Playgroud)