-1
我有兩個長度和列數相同的數據框。我想做一個簡單的rbind
,但得到的錯誤使用rbind複製rownames錯誤並讀取兩次相同的csv文件
> outputdf<-rbind(outputdf,currentcol)
Error in `row.names<-.data.frame`(`*tmp*`, value = value) :
duplicate 'row.names' are not allowed
In addition: Warning messages:
1: In `[<-.factor`(`*tmp*`, iseq, value = c(2L, 2L, 2L, 2L, 2L, 2L, :
invalid factor level, NA generated
2: non-unique values when setting 'row.names':
我之前收到的幫助,並通過讀取相同的CSV獲取的信息的不同部分兩次,建兩個dataframes。我正在使用這兩個數據幀來構建多個數據幀。但是,在使用rbind時,我遇到了重複的rownames錯誤。我在閱讀csvs時已嘗試row.names=FALSE
,並且還使用rownames(dataframe)<-NULL
進行刷新。我甚至想重做rownames使
rownames(dataframe2) <- c(nrow(dataframe1)+1):c(nrow(dataframe1)+nrow(dataframe2))
這給了我,以前的數據幀後開始,以避免重複列名稱的範圍。
所有這些都失敗了。我想知道我是否錯過了一些東西。
下面是代碼,其中A是我從一個Excel工作表
文件看起來像
country USA Britain
state NV
product peas corn
.
.
source cnn fox news
jan-02 3 5
feb-02 3 2
.
.
我早些時候曾幫助將其轉換成這種格式轉換csv文件
country state product units time .... source
USA NV peas 3 Jan-02 cnn
USA NV peas 3 feb-02 cnn
Britain corn 5 jan-02 fox news
Britain corn 2 feb-02 fox news
代碼是
A<-filenames[1]
#get data as separate df
datacols <- read.csv(A, header = FALSE, skip = 11, strip.white = TRUE,row.names=NULL)[-c(2:4)]
#get names as separate df
names <- read.csv(A, header = FALSE, nrows = 11, strip.white = TRUE,row.names=NULL,stringsAsFactors=FALSE)[-c(1:4)]
datanames<-c(1:11);datanames<-cbind(datanames,names)
#convertedfile dataset
outputdf<-data.frame()
#addtime into dataframe
timeframe<-datacols[1];colnames(timeframe)<-"time"
for(colindex in 2:c(ncol(datacols))){
currentcol<-timeframe
#bind price col to the current dataframe
price<-datacols[colindex];colnames(price)<-"Price"
currentcol$Price<-price
#add the country
currentcol$Country<-as.character(datanames[[colindex]][1])
#add market location
check<-as.character(datanames[[colindex]][2])
currentcol$Market_Location<-ifelse(nchar(check)<1,"na",check)
#add market name
check<-as.character(datanames[[colindex]][3])
currentcol$Market<-ifelse(nchar(check)<1,"na",check)
#add market latitude
check<-as.character(datanames[[colindex]][4])
currentcol$Market_Latitude<-ifelse(nchar(check)<1,"na",check)
#add market longitude
check<-as.character(datanames[[colindex]][5])
currentcol$Market_Longitude<-ifelse(nchar(check)<1,"na",check)
#add commodity
check<-as.character(datanames[[colindex]][6])
currentcol$Commodity<-ifelse(nchar(check)<1,"na",check)
#add produit agricoles
check<-as.character(datanames[[colindex]][7])
currentcol$produit_agricoles<-ifelse(nchar(check)<1,"na",check)
#add price type
check<-as.character(datanames[[colindex]][8])
currentcol$Price.Type<-ifelse(nchar(check)<1,"na",check)
#add unit
check<-as.character(datanames[[colindex]][9])
currentcol$Unit<-ifelse(nchar(check)<1,"na",check)
#add currency
check<-as.character(datanames[[colindex]][10])
currentcol$Currency<-ifelse(nchar(check)<1,"na",check)
#add source
check<-as.character(datanames[[colindex]][11])
currentcol$Datasource<-ifelse(nchar(check)<1,"na",check)
#bind dataframe
outputdf<-rbind(outputdf,currentcol[1,])
您可以給出更具體的數據示例,例如原始數據的子集,以便人們可以知道真正發生了什麼?使用'dput'來獲得可重複的例子。 – alittleboy
當您從原始數據對這兩個數據幀進行採樣時,您在兩個新數據幀中採樣的行是否有重疊? – StrikeR
當然更新代碼 – BaconDoggie