如果我想在R中选择数据子集,我可以使用子集函数.我想基于与少数几个标准匹配的数据进行分析,例如,某个变量是1,2或3.我尝试过
myNewDataFrame <- subset(bigfive, subset = (bigfive$bf11==(1||2||3)))
Run Code Online (Sandbox Code Playgroud)
它总是只选择与第一个标准匹配的值,这里1.我的假设是它将从1开始,如果它的评估为"false",它将继续到2而不是3,如果没有匹配==之后的语句为"false",如果其中一个匹配,则为"true".
我得到了正确的结果
newDataFrame <- subset(bigfive, subset = (bigfive$bf11==c(1,2,3)))
Run Code Online (Sandbox Code Playgroud)
但我希望能够通过逻辑运算符选择数据,所以:为什么第一种方法不起作用?
一个列表:
a = ['a', 'b', 'c', 3, 4, 'd', 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)
我想要一个使用子集的列表a[0:2],a[4], a[6:],
那是我想要一个清单 ['a', 'b', 4, 6, 7, 8]
我有时ftable纯粹使用该函数来表示层次类别.但是,有时候,当表很大时,我想在使用它之前进一步对表进行子集化.
假设我们从以下开始:
mytable <- ftable(Titanic, row.vars = 1:3)
mytable
## Survived No Yes
## Class Sex Age
## 1st Male Child 0 5
## Adult 118 57
## Female Child 0 1
## Adult 4 140
## 2nd Male Child 0 11
## Adult 154 14
## Female Child 0 13
## Adult 13 80
## 3rd Male Child 35 13
## Adult 387 75
## Female Child 17 14
## Adult 89 76
## Crew Male Child …Run Code Online (Sandbox Code Playgroud) 对于我正在编写的一些Python代码,我想在R中使用等效的子命令.
这是我的数据:
col1 col2 col3 col4 col5
100002 2006 1.1 0.01 6352
100002 2006 1.2 0.84 304518
100002 2006 2 1.52 148219
100002 2007 1.1 0.01 6292
10002 2006 1.1 0.01 5968
10002 2006 1.2 0.25 104318
10002 2007 1.1 0.01 6800
10002 2007 4 2.03 25446
10002 2008 1.1 0.01 6408
Run Code Online (Sandbox Code Playgroud)
我想子集基于内容的数据col1和col2.(col1中的唯一值为100002和10002,col2中的唯一值为2006,2007和2008.)
这可以使用subset命令在R中完成,Python中有类似的东西吗?
假设我有以下Ruby代码:
array_1 = ['a', 'b']
array_2 = ['a', 'b', 'c']
some_function(array_1, array_2) # => True
some_function(array_2, array_1) # => False
some_function(['a', 'b'], ['a', 'd']) # => False
some_function(['x', 'y'], array_2) # => False
Run Code Online (Sandbox Code Playgroud)
some_function当参数2包含参数1中的所有元素时,我非常希望返回True .
我试图在R(而不是data.frame)中对data.table(来自包data.table)进行子集化.我有一个4位数的年份作为关键.我想通过一系列的几年来分组.例如,我想要提取1999年,2000年,2001年的所有记录.
我试过传递DT[J(year)]以下二进制搜索语法:
1999,2000,2001
c(1999,2000,2001)
1999, 2000, 2001
Run Code Online (Sandbox Code Playgroud)
但这些似乎都不起作用.任何人都知道如何做一个子集,你想要选择的年份不只是1年,而是多年?
我试图根据他们的ID选择行.例如,在一个被叫的数据帧中test,ID 201有6行数据,ID 202也有6行数据,203,204 .....等.
现在我只想从数据集中提取201和202,所以它应该总共有12行.然而
out <- test[test$ID==c(201,202), ]
out <- subset(test, ID==c(201,202))
Run Code Online (Sandbox Code Playgroud)
只返回三个201和三个202,分别是行1,行3,行5 5 10 12.
任何人都可以提供一些建议,告诉我如何在R中做到这一点?
我有两个数据表,DT1和DT2:
set.seed(1)
DT1<-data.table(id1=rep(1:3,2),id2=sample(letters,6), v1=rnorm(6), key="id2")
DT1
## id1 id2 v1
## 1: 2 e 0.7383247
## 2: 1 g 1.5952808
## 3: 2 j 0.3295078
## 4: 3 n -0.8204684
## 5: 3 s 0.5757814
## 6: 1 u 0.4874291
DT2<-data.table(id2=c("n","u"), v1=0, key="id2")
DT2
## id2 v1
## 1: n 0
## 2: u 0
Run Code Online (Sandbox Code Playgroud)
我想基于与DT2的连接更新DT1,但仅针对DT1的子集.例如,对于DT1[id1==3],我希望第4行中的v1的值更新,如下面的结果:
DT1
## id1 id2 v1
## 1: 2 e 0.7383247
## 2: 1 g 1.5952808
## 3: 2 j 0.3295078
## 4: …Run Code Online (Sandbox Code Playgroud) 我需要将df子集以包含某些字符串.其中一些是完整的列名称,以下工作正常:
testData[,c("FullColName1","FullColName2","FullColName3")]
Run Code Online (Sandbox Code Playgroud)
我的问题是我需要扩展它以包含包含特定字符串的列名,这些字符串可能与其他一些列名称部分匹配.这些字符串包括字母和符号:
"PartString1()","PartString2()"
Run Code Online (Sandbox Code Playgroud)
我尝试在这些周围加上通配符.(我在下面用前缀"star"表示,因为"*"符号没有正确呈现.)
testData[ ,c("FullColName1","FullColName2","FullColName3",
"starPartString1()star","starPartString2()star")]
Run Code Online (Sandbox Code Playgroud)
但是我收到一条错误消息:选择了未定义的列.我无法弄清楚是否需要grep来完成这项工作.
有人可以解释一下为什么我在identical()下面的两行代码(调用)中得到不同的结果吗?这两个对象似乎是相同的对象,但是当我在apply函数中使用它们时,我遇到了一些麻烦:
df <- data.frame(a = 1:5, b = 6:2, c = rep(7,5))
df_ab <- df[,c(1,2)]
df_AB <- subset(df, select = c(1,2))
identical(df_ab,df_AB)
[1] TRUE
apply(df_ab,2,function(x) identical(1:5,x))
a b
TRUE FALSE
apply(df_AB,2,function(x) identical(1:5,x))
a b
FALSE FALSE
Run Code Online (Sandbox Code Playgroud)