有没有更简单的方法来确保数据框的行按照我在下面的简短示例中实现的"目标"向量进行排序?
df <- data.frame(name = letters[1:4], value = c(rep(TRUE, 2), rep(FALSE, 2)))
df
# name value
# 1 a TRUE
# 2 b TRUE
# 3 c FALSE
# 4 d FALSE
target <- c("b", "c", "a", "d")
Run Code Online (Sandbox Code Playgroud)
为了完成工作,这似乎有点太"复杂"了:
idx <- sapply(target, function(x) {
which(df$name == x)
})
df <- df[idx,]
rownames(df) <- NULL
df
# name value
# 1 b TRUE
# 2 c FALSE
# 3 a TRUE
# 4 d FALSE
Run Code Online (Sandbox Code Playgroud) 我试图让x轴标签在条形图上旋转45度而没有运气.这是我下面的代码:
barplot(((data1[,1] - average)/average) * 100,
srt = 45,
adj = 1,
xpd = TRUE,
names.arg = data1[,2],
col = c("#3CA0D0"),
main = "Best Lift Time to Vertical Drop Ratios of North American Resorts",
ylab = "Normalized Difference",
yaxt = 'n',
cex.names = 0.65,
cex.lab = 0.65)
Run Code Online (Sandbox Code Playgroud) 我在这里面临一些问题,在我的python包中我安装了numpy,但我仍然有这个错误'DataFrame'对象没有属性'sort'
任何人都可以给我一些想法..
这是我的代码:
final.loc[-1] =['', 'P','Actual']
final.index = final.index + 1 # shifting index
final = final.sort()
final.columns=[final.columns,final.iloc[0]]
final = final.iloc[1:].reset_index(drop=True)
final.columns.names = (None, None)
Run Code Online (Sandbox Code Playgroud) 我已经使用R一年多一点了,这是一次成功的冒险.但是,我经常发现,由于不知道如何找到它或它的一个例子,我无法弄清楚.
堆栈溢出,
您是否可以推荐一种学习R的途径,以便为其提供一个工具集来解决统计问题?
在互联网上,r项目网站和邮件列表之间有丰富的知识,但它似乎"无处不在",而且当你真正寻找它时无处可去.
例如,当我第一次开始使用R时,我经历了"Intro to R".然后我读了语言定义(显然没有沉没).但是每当我在Stackoverflow上问一个问题时,我都会遇到一些新的badass函数,它可以解决我在短期内遇到的所有问题.我的问题是,您是如何知道这些功能首先存在的?如何找到它们?据推测,你读过一些东西或找到一些资源,使你的学习成为曲线的指数部分.它以前如何?
显然,R作为统计工具的功能很广泛.出于我自己的目的,我主要从事经济或财务数据.因此,考虑到这一点的答案将是最有帮助的.
我有一个矩阵,有两列以下形式:
1 349
1 393
1 392
4 459
3 49
3 32
2 94
Run Code Online (Sandbox Code Playgroud)
我想基于第一列按递增顺序对此矩阵进行排序,但我想在第二列中保留相应的值.
输出看起来像这样:
1 349
1 393
1 392
2 94
3 49
3 32
4 459
Run Code Online (Sandbox Code Playgroud) 我有一个包含两个变量的数据框,Date和Taxa,并希望获得每个分类单元首次出现的日期.数据框中有9个不同的日期和40个不同的分类单元,由172行组成,但我的答案应该只有40行.
分类是一个因素,日期是一个日期.
例如,我的数据框(称为"种类")设置如下:
Date Taxa
2013-07-12 A
2011-08-31 B
2012-09-06 C
2012-05-17 A
2013-07-12 C
2012-09-07 B
Run Code Online (Sandbox Code Playgroud)
我会寻找这样的答案:
Date Taxa
2012-05-17 A
2011-08-31 B
2012-09-06 C
Run Code Online (Sandbox Code Playgroud)
我试过用:
t.first <- species[unique(species$Taxa),]
Run Code Online (Sandbox Code Playgroud)
它给了我正确的行数但是重复了Taxa.如果我只使用独特的(物种$ Taxa)它似乎给了我正确的答案,但后来我不知道它第一次出现的日期.
谢谢你的帮助.
如果我有一个大的DF(数百和数百)列,其中不同的col_names按字母顺序随机分布:
df.x <- data.frame(2:11, 1:10, rnorm(10))
colnames(df.x) <- c("ID", "string", "delta")
Run Code Online (Sandbox Code Playgroud)
如何按字母顺序按col_name排序所有数据(垂直)?
基本上,我有数百个CSV(sep ="|")文本文件,我需要将它们的列读入单个df,按字母顺序排列这些列,然后使用其他一些dplyf函数来获得最终结果.除了如何按字母顺序排列列之外,我已经解决了所有问题.我不想按字母排序(上下)列,而是col_names的实际垂直方向及其相应的数据.类似于在Excel中剪切和粘贴整列数据.
例如,我回顾了这种方法,但这是按字母顺序排序的行,这不是我想要做的.
谢谢!
可能重复:
如何按R中的列对数据帧进行排序
我只是想知道是否有人可以帮助我,我有我认为应该是一个容易解决的问题.
我有下表:
SampleID Cluster
R0132F041p 1
R0132F127 1
R0132F064 1
R0132F068p 1
R0132F015 2
R0132F094 3
R0132F105 1
R0132F013 2
R0132F114 1
R0132F014 2
R0132F039p 3
R0132F137 1
R0132F059 1
R0132F138p 2
R0132F038p 2
Run Code Online (Sandbox Code Playgroud)
我想通过Cluster对其进行排序/排序,以获得如下结果:
SampleID Cluster
R0132F041p 1
R0132F127 1
R0132F064 1
R0132F068p 1
R0132F105 1
R0132F114 1
R0132F137 1
R0132F059 1
R0132F015 2
R0132F013 2
R0132F014 2
R0132F138p 2
R0132F038p 2
R0132F094 3
R0132F039p 3
Run Code Online (Sandbox Code Playgroud)
我试过以下R代码:
data<-read.table('Table.txt', header=TRUE,row.names=1,sep='\t')
data <- data.frame(data)
data <- data[order(data$Cluster),] …Run Code Online (Sandbox Code Playgroud) 我创建了一个随机森林并预测了我的测试集的类,它们在数据帧中幸福地生活:
row.names class 564028 1 275747 1 601137 0 922930 1 481988 1 ...
该 row.names属性告诉我在进行各种操作之前哪一行是哪一行,这些操作在进程中扰乱了行的顺序.到现在为止还挺好.
现在,我想对我的预测的准确性有一个普遍的感觉.为此,我需要使用此数据框并根据row.names属性按升序对其重新排序.通过这种方式,我可以将观察结果与行标识进行比较,我已经知道了.
请原谅我提出这样一个基本问题,但对于我的生活,我找不到关于如何完成这项琐碎任务的良好信息来源.
文档恳求我:
使用
attr(x, "row.names"),如果你需要获取一个整数值组行的名字.
但这让我一无所获NULL.
我的问题是,row.names在整个工作流程中,我如何使用忠实地跟随我的数据框架的各种形式?这不是它的用途吗?
我有一个3列(name,, )的数据框y,sex其中name是字符,y是一个数值,sex是一个因子.
sex<-c("M","M","F","M","F","M","M","M","F")
x<-c("MARK","TOM","SUSAN","LARRY","EMMA","LEONARD","TIM","MATT","VIOLET")
name<-as.character(x)
y<-rnorm(9,8,1)
score<-data.frame(x,y,sex)
score
name y sex
1 MARK 6.767086 M
2 TOM 7.613928 M
3 SUSAN 7.447405 F
4 LARRY 8.040069 M
5 EMMA 8.306875 F
6 LEONARD 8.697268 M
7 TIM 10.385221 M
8 MATT 7.497702 M
9 VIOLET 10.177969 F
Run Code Online (Sandbox Code Playgroud)
如果我想订购,y我会使用:
score[order(score$y),]
x y sex
1 MARK 6.767086 M
3 SUSAN 7.447405 F
8 MATT 7.497702 M
2 TOM …Run Code Online (Sandbox Code Playgroud)