我试图通过删除特定列中具有相同值的每组行中除了一行以外的所有行来折叠数据框。 换句话说,每组的第一行。 例如,我想转换这个 > d = data.frame(x=c(1,1,2,4),y=c(10,11,12,13),z=c(20,19,18,17)) > d xyz 1 1 10 20 2 1 11 19 3 2 12 18 4 4 13 17 进入这个: xyz 1 1 11 19 2 2 12 18 3 4 13 17 目前我正在使用聚合来完成这个任务,但是如果有更多的数据,性能是不可接受的: > d.ordered = d[order(-d$y),] > aggregate(d.ordered,by=list(key=d.ordered$x),FUN=function(x){x[1]}) 我尝试过使用与此处相同的函数参数进行split / unsplit,但是unsplit抱怨重复的行号。 有可能吗? 是否有一个R语言将rle的长度向量转换为开始每次运行的行的索引,然后我可以使用这些索引将这些行从数据框中提取出来?
假设我们有一个数据框x ,其中包含列job和income 。 参考框架中的数据通常需要命令x$job用于job列中的数据, x$income用于income列中的数据。 但是,使用attach(x)命令可以在引用相同的数据时删除数据框的名称和$符号。 因此, x$job变成job , x$income变成R代码中的income 。 问题在于R中的许多专家build议在R编码时不要使用attach()命令。 这主要是什么原因? 应该用什么来代替?
我有这样的数据框: df VALUE ABS_CALL DETECTION P-VALUE 1007_s_at "957.729231881542" "P" "0.00486279317241156" 1053_at "320.632701283368" "P" "0.0313356324173416" 117_at "429.842323161046" "P" "0.0170004527476119" 121_at "2395.7364289242" "P" "0.0114473584876183" 1255_g_at "116.493632746934" "A" "0.39799368200131" 1294_at "739.927122116896" "A" "0.0668649772942343" 我想将行名转换成第一列。 目前我使用类似这样的方式将行名称作为第一列: d <- df names <- rownames(d) rownames(d) <- NULL data <- cbind(names,d) 是否有一条线来做到这一点?
我试图将列索引传递给ggplot作为我将重复使用的函数的一部分。 喜欢: myplot <- function(df){ ggplot(df, aes(df[, 1], df[, 2])) + geom_point() } 我将始终使用第一列作为我的xvariables,第二列作为我的yvariables,但列名称在数据集之间更改。 我已经搜遍了所有的想法? 编辑: 这是我使用的答案: require(ggplot2) myplot <- function(df){ ggplot(df, aes_string(colnames(df)[1], colnames(df)[2])) + geom_point() }
根据逐行创buildR数据 data.frame使用rbind附加到data.frame并不理想,因为它每次都会创build整个data.frame的一个副本。 我如何在R累加数据而不会产生这种惩罚? 中间格式不需要是data.frame 。
我对dplyr动词mutate_each.有点困惑mutate_each. 使用基本的mutate将一列数据转换成z分数,并在你的data.frame中创build一个新的列(这里的名字是z_score_data )是z_score_data : newDF <- DF %>% select(one_column) %>% mutate(z_score_data = one_column – (mean(one_column) / sd(one_column)) 但是,由于我想要转换多列数据,所以我应该使用mutate_each动词。 newDF <- DF %>% mutate_each(funs(scale)) 到现在为止还挺好。 但是至今我还没有弄明白: 我怎么能给这些新的列适当的名字,就像我可以在mutate ? 我怎样才能select我想变异的某些列,就像我在第一种情况下select的一样? 谢谢你的帮助。
我正在学习R的XML包。 我试图从books.xml示例xml数据文件创build一个data.frame。 这是我得到的: library(XML) books <- "http://www.w3schools.com/XQuery/books.xml" doc <- xmlTreeParse(books, useInternalNodes = TRUE) doc xpathApply(doc, "//book", function(x) do.call(paste, as.list(xmlValue(x)))) xpathSApply(doc, "//book", function(x) strsplit(xmlValue(x), " ")) xpathSApply(doc, "//book/child::*", xmlValue) 这些xpathSApply中的每一个都不会让我接近我的意图。 应该如何进行一个良好的数据框?
我需要转置一个大的数据框,所以我用: df.aree <- t(df.aree) df.aree <- as.data.frame(df.aree) 这是我所获得的: df.aree[c(1:5),c(1:5)] 10428 10760 12148 11865 name M231T3 M961T5 M960T6 M231T19 GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04 GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04 GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04 GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04 我的问题是我需要消除的新列名称(10428,10760,12148,11865),因为我需要使用第一行作为列名称。 我尝试col.names()函数,但我没有得到我所需要的。 你有什么build议吗? 编辑 感谢您的build议! 使用它我得到: df.aree[c(1:5),c(1:5)] M231T3 M961T5 M960T6 M231T19 GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04 GS16.A […]
我有一个data.frame,我想按行转换为一个列表,这意味着每一行将对应于自己的列表元素。 换句话说,我想要一个列表,只要data.frame有行。 到目前为止,我已经通过以下方式解决了这个问题,但是我想知道是否有更好的方法来处理这个问题。 xy.df <- data.frame(x = runif(10), y = runif(10)) # pre-allocate a list and fill it with a loop xy.list <- vector("list", nrow(xy.df)) for (i in 1:nrow(xy.df)) { xy.list[[i]] <- xy.df[i,] }
我在我的数据集中有一列,其中时间段( Time )是从ab到整数。 有时可能会有任何给定的组缺less时间段。 我想用NA填写那些行。 以下是一个(几个1000个)组中的一个的示例数据。 structure(list(Id = c(1, 1, 1, 1), Time = c(1, 2, 4, 5), Value = c(0.568780482159894, -0.7207749516298, 1.24258192959273, 0.682123081696789)), .Names = c("Id", "Time", "Value"), row.names = c(NA, 4L), class = "data.frame") Id Time Value 1 1 1 0.5687805 2 1 2 -0.7207750 3 1 4 1.2425819 4 1 5 0.6821231 […]