我有一个名为dataframe
的大dualbeta
,其中包含2行和6080列。这是一个示例:
row.names A.Close AA.Close AADR.Close AAIT.Close AAL.Close
1 upside 1.253929 0.9869027 0.6169613 0.6353903 0.1782124
2 downside 1.027412 1.1936236 0.5915299 0.5697878 0.1702382
我正在尝试仅提取upside
> = 1.00的那些以及downside
&lt; = 1.00的那些。我使用combinations <- subset(dualbeta, upside>=1.00 & downside<=1.00)
,但我得到以下内容:
row.names A.Close AA.Close AADR.Close AAIT.Close
1 NA NA NA NA NA
2 NA.1 NA NA NA NA
3 NA.2 NA NA NA NA
4 NA.3 NA NA NA NA
5 NA.4 NA NA NA NA
...
它应该只返回一个2 by x
表,其中x是找到的组合数。我不知道为什么我会得到一堆行?另外,我认为我在NA
中有dualbeta
个值,因此我使用na.omit(dualbeta)->dualbeta
但它删除了所有内容已将dualbeta
变为0 by 6080
。我还使用了返回which(is.na(dualbeta))
和3307
的{{1}},但是当我检查这些列时,它们不包含NA。
答案 0 :(得分:2)
您可以处理数据的转置,以便选择具有适当特征的行(转置中的列):
# Fix up the data, use proper row names
rownames(x) <- x$row.names
# Remove old row name column
x <- x[-1]
# transpose and subset
subset(data.frame(t(x)), upside > 1 & downside < 1)
此表达式返回示例数据的零长度结果。更改参数会显示返回的内容:
subset(data.frame(t(x)), upside > .6 & downside < .6)
## upside downside
## AADR.Close 0.6169613 0.5915299
## AAIT.Close 0.6353903 0.5697878
答案 1 :(得分:0)
您可以使用简单的索引编制数据。
假设这是您的数据
dualbeta<-data.frame(matrix(runif(24,0,2),
nrow=2,
dimnames=list(c("upside","downside"), letters[1:12])))
然后你可以用
提取dualbeta[, dualbeta[1,]>=1.00 & dualbeta[2,]<=1.00]