我正在尝试删除NaN值并按row.names进行排序。我尝试使用dplyr进行此操作,但我的尝试没有成功。有人可以提出解决办法吗?
require(markovchain)
data1<-data.frame(dv=rep(c("low","high"),3),iv1=sample(c("A","B","C"),replace=T,6))
markov<-markovchainFit(data1)
markovDF<-as(markov, "data.frame")
library(dplyr)
markovDF%>%filter(rowSums>0)%>%arrange(desc(markovDF[,1]))
> markov
$estimate
A B C high low
A NaN NaN NaN NaN NaN
B NaN NaN NaN NaN NaN
C NaN NaN NaN NaN NaN
high 0.3333333 0.0000000 0.6666667 0 0
low 0.6666667 0.3333333 0.0000000 0 0
Run Code Online (Sandbox Code Playgroud)
目标:
A B C high low
high .33 .00 .67 0 0
low .67 .33 .00 0 0
Run Code Online (Sandbox Code Playgroud)
小智 5
似乎 nelsonauner 的回答改变了row.names属性。因为你想排序row.names似乎是一个问题。
你不需dplyr要这样做:
library(markovchain)
data1 <- data.frame(dv=rep(c("low","high"),3),iv1=sample(c("A","B","C"),replace=T,6))
markov<-markovchainFit(data1)
#Get into dataframe
markov <- as.data.frame(markov$estimate@transitionMatrix)
#Remove rows that contain nans
markov <- markov[complete.cases(markov), ]
#sort by rowname
markov <- markov[order(row.names(markov)),]
A B C high low
high 0.0000000 0.3333333 0.6666667 0 0
low 0.3333333 0.3333333 0.3333333 0 0
Run Code Online (Sandbox Code Playgroud)