给定一个字符串列表,如何计算每个字符串出现的次数?假设我有一个向量x如下:
x <- c('cat','cat','cat','cat','dog','dog','cat','cow')
Run Code Online (Sandbox Code Playgroud)
我想得到的计数为:
# cat : 5
# dog : 2
# cow : 1
Run Code Online (Sandbox Code Playgroud)
我知道答案不会是这样的格式,而是类似的格式。
我有以下代码
t <- tapply(z[,3],z[,1],summary)
# > t
# $AUS
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# -0.92420 -0.57920 0.08132 -0.13320 0.35940 0.39650
#
# $NZ
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# -1.80700 -0.98980 -0.98310 -0.57470 0.02292 0.88330
Run Code Online (Sandbox Code Playgroud)
我希望它显示为
Min. 1st Qu. Median Mean 3rd Qu. Max.
Aus -0.92420 -0.57920 0.08132 -0.13320 0.35940 0.39650
NZ -1.80700 -0.98980 -0.98310 -0.57470 0.02292 0.88330
Run Code Online (Sandbox Code Playgroud)
如何在R中完成?
我有一个非常大的数据帧,称为FTSE.在这里他的结构.
str(FTSE)
'data.frame': 21167 obs. of 5 variables:
$ Name : Factor w/ 2 levels "FTSE MIB","FTSE MIB NET TOT ": 1 1 1 1 1 1 1 1 1 1 ...
$ DateLastTrade: Factor w/ 18 levels "12/10/13","12/11/13",..: 9 9 9 9 9 9 9 9 9 9 ...
$ LastPrice : num 19091 19008 19002 19018 19018 ...
$ Open : num 19091 19091 19091 19091 19091 ...
$ LastClose : num 19021 19021 19021 19021 19021 ... …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中包含大约100个我想要更改为数字类型的因子变量.我怎样才能完成整个数据框?我知道我可以通过使用此代码为每个变量执行此操作:dat$.Var2<-as.numeric(dat$.Var2)
但我想为很多变量执行此操作.这是一个示例数据框.
dat <- read.table(text = " TargetVar Tar_Var1 Var2 Var3
0 0 0 7
0 0 1 1
0 1 0 3
0 1 1 7
1 0 0 5
1 0 1 1
1 1 0 0
1 1 1 6
0 0 0 8
0 0 1 5
1 1 1 4
0 0 1 2
1 0 0 9
1 1 1 2 ", header = TRUE)
Run Code Online (Sandbox Code Playgroud) 我有一张表,其中一个变量是注册国家.
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) 我很肯定这是一个非常简单的答案,但是我似乎无法在多个条件下进行聚合或转换
我有一个看起来像这样的表:
> head(df, n=10L)
STATE EVTYPE FATALITIES INJURIES
1 AL TORNADO 0 15
3 AL TORNADO 0 2
4 AL TORNADO 0 2
5 AL TORNADO 0 2
6 AL TORNADO 0 6
7 AL TORNADO 0 1
9 AL TORNADO 1 14
11 AL TORNADO 0 3
12 AL TORNADO 0 3
13 AL TORNADO 1 26
Run Code Online (Sandbox Code Playgroud)
显然,这种情况还在继续...我要做的是在执行过程中按STATE和EVTYPE折叠,以计算致命和伤害,因此,如果这10行是我的有效数据集,那么结果将是一个单行数据帧:
STATE EVTYPE FATALITIES INJURIES
1 AL TORNADO 2 74
Run Code Online (Sandbox Code Playgroud)
我的完整框架有很多状态和许多EVTYPE
我在数据帧中有以下变量
test<-data.frame(x=c("", "1-7-9", "3", "2-4-6-8"))
Run Code Online (Sandbox Code Playgroud)
我想在变量中拆分:
Var1 Var2 Var3 Var4
NA NA NA NA
1 7 9
3 NA NA NA
2 4 6 8
Run Code Online (Sandbox Code Playgroud)
我试过了
test2<-strsplit(as.character(vartest$x), "\\-")
Run Code Online (Sandbox Code Playgroud)
但我得到一个列表而不是数据帧
请帮我