R中的泰坦尼克号数据集
我正试图解决R中“泰坦尼克号”数据集的一个问题 在该数据中,最后一列给出了观测频率(“频率”列)。 例如,第三行表示频率=35,这意味着这一行将重复35次 因此,我正在编码一个新的数据帧,其中所有频率大于0的行都被打印了那么多次(行号3被追加到新的数据帧中,35次) 新数据帧中的总行数=2201,这是频率列中所有值的总和 我使用了一个长度为2201的字符向量来存储第一列“Class”的所有值,我在其中添加值 我已经编写了以下代码-R中的泰坦尼克号数据集,r,R,我正试图解决R中“泰坦尼克号”数据集的一个问题 在该数据中,最后一列给出了观测频率(“频率”列)。 例如,第三行表示频率=35,这意味着这一行将重复35次 因此,我正在编码一个新的数据帧,其中所有频率大于0的行都被打印了那么多次(行号3被追加到新的数据帧中,35次) 新数据帧中的总行数=2201,这是频率列中所有值的总和 我使用了一个长度为2201的字符向量来存储第一列“Class”的所有值,我在其中添加值 我已经编写了以下代码- data(Titanic) # View(Titanic) #
data(Titanic)
# View(Titanic)
# create a data frame out of 'Titanic' data frame-
T <- as.data.frame(Titanic, stringsAsFactors = FALSE)
# cat("Total # of observations - ", sum(T$Freq)) # O/P = 2201
n <- sum(T$Freq)
# full_titanic <- data.frame(Class = character(n), Sex = character(n), Age = character(n), Survived = character(n), stringsAsFactors=FALSE)
full_Class <- character(n) # create an array of 2201 character objects
for(i in 1:nrow(T))
{
if(T$Freq[i] > 0)
{
cnt = T$Freq[i]
# repeating_val <- T$Class[i]
j <- 0
while(j < cnt)
{
# full_Class[i] <- repeating_val
full_Class[i + j] <- T$Class[i]
# cat("T$Class[", i, "] = ", T$Class[i], "\n")
# cat("Repeating for i = ", i, "\n")
j <- j + 1
}
}
else
{
full_Class[i] <- T$Class[i]
}
# cat("i = ", i, "\n")
}
怎么了
谢谢 这有帮助吗
T1<-T[T$Freq==0,] # data with zero frequency
T2<-T[rep(row.names(T),T$Freq),] #data with nonzero frequency
T3<-rbind(T1,T2) #full data
rownames(T3) <- 1:nrow(T3) #reset row index of full data
t1假设数据位于d1
中,并且删除了Freq==0的行:d1[rep(1:nrow(d1),d1$Freq),]
删除了Freq==0
行的数据集,我将丢失这些行。我想获得一个包含所有数据的新数据集。如何将某个内容重复0次?不重复,只包含它。有8行是-1 2 4 5 6 8 20 24(其中'Freq==0'),然后我建议你在你的问题中编辑这句话:“因此,我正在编码一个新的数据帧,其中所有频率>0的行都被多次打印(第3行被追加到新的数据帧中,35次)。”只需添加一个更改=>actual\u titanic
T1<-T[T$Freq==0,] # data with zero frequency
T2<-T[rep(row.names(T),T$Freq),] #data with nonzero frequency
T3<-rbind(T1,T2) #full data
rownames(T3) <- 1:nrow(T3) #reset row index of full data