2016-09-28 21 views
1

這很簡單,但由於某種原因,我遇到了麻煩。我有這樣一組Data這樣的:對前12行執行一列的特定功能?

File  Trait  Temp Value Rep 
PB  Mortality 16  52.2  54 
PB  Mortality 17  21.9  91 
PB  Mortality 18  15.3  50 
... 

它繼續像這樣的36行。我需要做的是在前12行中將Value列除以100。我做了:

NewData <- Data[1:12,4]/100 

嘗試創建新的數據幀而不更改舊數據。當我這樣做時,它將第四列分開,但在全局環境中僅將第四列(第1-12行)保存爲全局環境中的Values,而不是Data與原始集合中的其餘行/列一起保存。總體而言,我試圖將NewData納入nls函數,因此我需要將修改後的數據與其餘數據一起保存,而不是作爲單獨的值保存。有沒有辦法讓我修改前12行而不用將R保存爲值?

+0

也許你想'下降= FALSE','數據[1: 12,4,drop = FALSE]/100' – akrun

回答

0
library(dplyr) 
newdata <- data[1:12,] %>% mutate(newV = VALUE/100) 
newdata$Value = newdata$newV 
newdata = newdata %>% select(-newV) 

那麼你可以做

full_data = rbind(newdata,data[13:36,]) 
+0

我真的很好奇「%>%」的目的是做什麼,因爲R似乎並不喜歡它或理解。那是假設要做的。 (我應該警告過你,我非常新手)。另外,「Library(dplyr)」似乎也不起作用。 R認爲它是一個包 – CowsGoM00

+0

一旦你習慣了語法,大部分數據處理任務變得非常簡單。它被稱爲「管道」語法,它在dplyr包中使用。這只是意味着前面的事情會被引入下一件事。 – Stephen

+0

dplyr是一個包。你需要使用install.packages(「dplyr」)來安裝它,然後加載庫。 – Stephen

1

考慮複製數據框,然後在選擇行更新列:

NewData <- Data 
NewData$Value[1:12] <- NewData$Value[1:12]/10 
# NewData[1:12,4] <- NewData[1:12,4]/10   ' ALTERNATE EQUIVALENT