我有一张表,其中一个变量是注册国家.
table(df$reg_country)
Run Code Online (Sandbox Code Playgroud)
收益:
AR BR ES FR IT
123 202 578 642 263
Run Code Online (Sandbox Code Playgroud)
现在,如果我将原始表格分组以排除其中一个国家/地区
df_subset<-subset(df, reg_country!='AR')
table(df_subset$reg_country)
Run Code Online (Sandbox Code Playgroud)
收益:
AR BR ES FR IT
0 202 578 642 263
Run Code Online (Sandbox Code Playgroud)
第二个结果对我来说非常令人惊讶,因为R似乎神奇地知道我已经从AR中删除了条目.
为什么会这样?
它是否会影响第二个数据框(df_subset)的大小?如果"是" - 是否有更有效的方法来进行子集以最小化尺寸?
我有两个数字向量,我想按他们的观察长度排序,即每个观察出现的次数.
例如:
x <- c("a", "a", "a", "b", "b", "b", "b", "c", "e", "e")
Run Code Online (Sandbox Code Playgroud)
在这里,b发生四次,a三次,e两次和c一次.我希望我的结果符合这个顺序.
ans <- c("b", "b", "b", "b", "a", "a", "a", "e", "e", "c")
Run Code Online (Sandbox Code Playgroud)
我试过这个:
x <- x[order(-length(x))] # and some similar lines.
Run Code Online (Sandbox Code Playgroud)
谢谢
假设我有一个这样的数据框:
v1 v2 v3
a 1 a
a 2 b
a 6 c
b 3 a
b 4 b
b 5 c
Run Code Online (Sandbox Code Playgroud)
其中v1是一个因子,v3是一个字符.我想将一些函数应用于数据框,这样v2在v1中拆分,然后包含在数据框中:
v1 v2 v3 v4 v5
a 1 a 1 NA
a 2 b 2 NA
a 6 c 6 NA
b 3 a NA 3
b 4 b NA 4
b 5 c NA 5
Run Code Online (Sandbox Code Playgroud)
我能够解决的解决方案非常复杂.这样做有一种优雅的方式吗?
(注意:v3的存在是因为任何解决方案都需要能够处理数据帧中应该忽略的其他非数字向量的存在.)
注意:为了方便起见,我使用上一篇文章中的示例数据集。
假设有两个数据集,ref和map。他们是:
ref <- data.table(space=rep('nI',3),t1=c(100,300,500),t2=c(150,400,600),id=letters[1:3])
map <- data.table(space=rep('nI',241),t1=seq(0,1200,by=5),t2=seq(5,1205,by=5),res=rnorm(241))
Run Code Online (Sandbox Code Playgroud)
他们看起来像:
> ref
space t1 t2 id
1: nI 100 150 a
2: nI 300 400 b
3: nI 500 600 c
> map
space t1 t2 res
1: nI 0 5 -0.7082922
2: nI 5 10 1.8251041
3: nI 10 15 0.2076552
4: nI 15 20 0.8047347
5: nI 20 25 2.3388920
---
237: nI 1180 1185 1.0229284
238: nI 1185 1190 -0.3657815
239: nI 1190 1195 …Run Code Online (Sandbox Code Playgroud) 假设我在data.table中有这样的列:
对不起,我第一次没有具体说明.每个值都属于一个项目代码.代码将重复几次,因为这些项属于一个系列.有些物品有价值a,b,c,有些有a,b,c,d,有些有a,b,有些有b.
family item value
1 001 01 a
2 001 01 b
3 001 01 c
4 001 02 b
5 001 05 b
6 001 32 a
7 001 32 b
8 001 32 c
9 001 32 d
10 002 01 a
11 002 01 b
12 002 01 c
13 002 32 b
14 002 55 b
Run Code Online (Sandbox Code Playgroud)
如何通过放在b每个项目的前面来订购列?喜欢b,a,c,b,a,c,d,b,a,b.有序列应如下所示: …
假设我的数据框(mydata)中有三个变量:1)id,2)case和3)value.
mydata <- data.frame(id=c(1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4), case=c("a","b","c","c","b","a","b","c","c","a","b","c","c","a","b","c","a"), value=c(1,34,56,23,34,546,34,67,23,65,23,65,23,87,34,321,87))
mydata
id case value
1 1 a 1
2 1 b 34
3 1 c 56
4 1 c 23
5 1 b 34
6 2 a 546
7 2 b 34
8 2 c 67
9 2 c 23
10 3 a 65
11 3 b 23
12 3 c 65
13 3 c 23
14 4 a 87
15 4 b 34
16 4 c 321
17 4 a 87
Run Code Online (Sandbox Code Playgroud)
对于每个id,我们可以有类似的"case"字符,它们的值可以相同或不同.所以基本上,如果它们的值相同,我只需要保留一个并删除副本.
那么我的最终数据将是 …
我data.frame喜欢这样的:
n = 50
df = data.frame(group=sample(1:as.integer(n/2),n,replace=T),
x = runif(n),
y = runif(n),
z = runif(n))
df = df[with(df,order(group)),]
Run Code Online (Sandbox Code Playgroud)
我需要做什么,对每个独特的价值group,是制作部分,即其中新列产生xend,yend并且zend,它们是x,y,z该组中的前一个点的值.对于组中的最后一个值,结束将作为组中的第一个点.
我可以通过以下方式执行此操作:
res = ddply(df,"group",function(d){
ixc = c("x","y","z")
dfE = d[,ixc]
dfE = rbind(dfE[nrow(dfE),],dfE[1:(nrow(dfE)-1),])
colnames(dfE) = paste0(ixc,"end")
cbind(d,dfE)
})
print(head(res))
Run Code Online (Sandbox Code Playgroud)
当它n很小时,这是微不足道的,然而,当n变大时,执行上述操作的时间变得非常重要,是否有更快的方法来执行此操作,也许使用data.table?
我有一组看起来像这样的数据:
col1 col2 col3 col4 cr
84 88.242 9.833 4.194 A
94 107.571 10.917 3.708 B
188 240.288 16.917 6.333 A
245 371.005 22.333 10.389 A
114 131.599 9.167 4.25 A
71 100.751 8.167 3 B
118 138.543 11.167 4.278 A
162 203.435 14.667 6.444 B
123 152.032 12.167 4.639 B
115 126.945 11.667 5.056 A
125 134.178 10 4.639 B
119 138.926 9.5 4.222 A
106 129.19 9.833 3.833 A
146 162.319 9.833 4.118 A
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用简单的barplot命令绘制数据,但它没有给出我真正想要的图形.我希望生成一个图表,让每个列有10个条形图(每个条形图代表一个范围,例如0-20,20-40等),X …
为了整理我的数据,我使用了以下功能 -
tolower(gsub("\\.","",names(data)))
Run Code Online (Sandbox Code Playgroud)
从长矢量名称中删除大写和点(.) Last.Inquiry.For.Loan
它工作并回馈:lastinquiryforloan.但它并没有坚持下去.当我跑步时summary(data),我会看到所有旧的矢量名称.如何将此更改永久化,以便我更容易进行分析?
我有一个看起来像这样的数据集
VegType 87MIN 87MAX 87Q25 87Q50 87Q75 96MIN 96MAX 96Q25 96Q50 96Q75 00MIN 00MAX 00Q25 00Q50 00Q75
1 0.02 0.32 0.11 0.12 0.13 0.02 0.26 0.08 0.09 0.10 0.02 0.28 0.10 0.11 0.12
2 0.02 0.45 0.12 0.13 0.13 0.02 0.20 0.09 0.10 0.11 0.02 0.26 0.11 0.12 0.12
3 0.02 0.29 0.13 0.14 0.14 0.02 0.27 0.11 0.11 0.12 0.02 0.26 0.12 0.13 0.13
4 0.02 0.41 0.13 0.13 0.14 0.02 0.58 0.10 0.11 0.12 0.02 0.34 0.12 0.13 …Run Code Online (Sandbox Code Playgroud)