Tag: r faq

如何按列sorting数据框?

我想sorting一个data.frame多列。 例如,在下面的data.frame中,我想按列z (降序)然后按列b (升序)sorting: 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 bxyz 1 Hi A 8 1 2 Med D 3 1 3 Hi A 9 1 […]

如何将一个因子转换为整数\数字而不会丢失信息?

当我把一个因子转换成数字或整数时,我得到了底层的代码,而不是数值。 f <- factor(sample(runif(5), 20, replace = TRUE)) ## [1] 0.0248644019011408 0.0248644019011408 0.179684827337041 ## [4] 0.0284090070053935 0.363644931698218 0.363644931698218 ## [7] 0.179684827337041 0.249704354675487 0.249704354675487 ## [10] 0.0248644019011408 0.249704354675487 0.0284090070053935 ## [13] 0.179684827337041 0.0248644019011408 0.179684827337041 ## [16] 0.363644931698218 0.249704354675487 0.363644931698218 ## [19] 0.179684827337041 0.0284090070053935 ## 5 Levels: 0.0248644019011408 0.0284090070053935 … 0.363644931698218 as.numeric(f) ## [1] 1 1 3 […]

将dataframe从宽转换为长格式

我有一些麻烦将我的data.frame从宽表转换为长表。 目前看起来像这样: wide <- read.table(textConnection( "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"), header=TRUE) 这产生的数据框架wide如下所示: 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 我想变换成一个很长的data.frame例如: Code Country Year Value AFG […]

分组函数(tapply,by,aggregate)和* apply family

每当我想在R中“映射”py时,我通常会尝试在apply系列中使用函数。 然而,我从来没有完全理解它们之间的差异 – 如何将input/分组input的function,输出的结果,甚至是input的内容我经常只是通过他们,直到我得到我想要的。 有人可以解释如何使用哪一个? 我目前(可能不正确/不完整)的理解是… sapply(vec, f) :input是一个向量。 输出是一个向量/matrix,其中元素i是f(vec[i]) ,给出一个matrix,如果f有一个多元素输出 lapply(vec, f) :与sapply相同,但是输出是列表? apply(matrix, 1/2, f) :input是一个matrix。 输出是一个向量,其中元素i是f(matrix的行/列) tapply(vector, grouping, f) :output是一个matrix/数组,其中matrix/数组中的一个元素是该vector的分组g处的f的值,并且g被推到行/列名 by(dataframe, grouping, f) :让g是一个分组。 将f应用于组/数据框的每一列。 漂亮的打印分组和每列的f的值。 aggregate(matrix, grouping, f) :类似于,但不是漂亮地打印输出,聚合将所有东西都粘到数据框中。 旁边的问题:我还没有学会plyr或重塑 – 将plyr或reshape完全取代所有这些?

如何按组分组variables?

假设我有两列数据。 第一个包含“First”,“Second”,“Third”等类别。第二个包含表示我看到“First”的次数的数字。 例如: Category Frequency First 10 First 15 First 5 Second 2 Third 14 Third 20 Second 3 我想按类别对数据进行sorting并对频率进行求和: Category Frequency First 30 Second 5 Third 34 我如何在R中做到这一点?

如何制作数据框的列表?

如何制作dataframe列表,以及如何从列表中访问每个dataframe? 我无法find这个简单的例子。 所以我告诉我我的post太短了,所以我会通过把一些数据框放在一个列表中来让它滚动。 d1<-data.frame(y1<-c(1,2,3),y2<-c(4,5,6)) d2<-data.frame(y1<-c(3,2,1),y2<-c(6,5,4))

为什么这些数字不相等?

下面的代码显然是错误的。 有什么问题? i <- 0.1 i <- i + 0.05 i ## [1] 0.15 if(i==0.15) cat("i equals 0.15") else cat("i does not equal 0.15") ## i does not equal 0.15

如何从长到宽的格式重塑数据?

我在重新排列下面的数据框时遇到了问题: 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 我想重塑它,以便每个唯一的“名称”variables是rowname,其中“values”作为该行的观察值,“numbers”作为colnames。 […]

如何join(合并)数据框架(内部,外部,左,右)?

给定两个dataframe: 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 # […]

如何做一个伟大的R可重现的例子?

在讨论与同事的performance,教导,发送错误报告或在邮件列表上寻找指导时,在这里,一个可复制的例子往往被问及,总是有帮助的。 你有什么build议创build一个很好的例子? 如何从文本格式粘贴r的数据结构? 你应该包括哪些其他信息? 除了使用dput() , dump()或者structure()之外,还有其他的技巧吗? 何时应该包含library()或require()语句? 除了c , df , data等之外,还应该避开哪些保留字? 如何做一个伟大的可重复的例子?