2015-02-11 21 views
0

我在數據SocialData中有名爲count_of_people的列。我想查找count_of_people的日誌值,並用新的日誌值替換count_of_people的值。這如何實現?如何用新值重寫列?

嘗試以下操作: within(SocialData, count_of_people <- log(SocialData$count_of_people))但它沒有工作。

+0

@RStudent工作得很好! – Gworld 2015-02-11 18:25:42

回答

2

有幾種選擇

一般:

SocialData$count_of_people <- log(SocialData$count_of_people) 

但編程自己的功能時,我認爲這是醜陋的,所以最有用的。

替代品,我覺得更好/更易讀的腳本是:

SocialData <- transform(SocialData, count_of_people = log(count_of_people)) 

SocialData <- within(SocialData, count_of_people <- log(count_of_people)) 

例如

set.seed(10) 
SocialData <- data.frame(A = 1:10, count_of_people = rpois(10, 5)) 

SocialData.t <- transform(SocialData, count_of_people = log(count_of_people)) 
SocialData.w <- within(SocialData, count_of_people <- log(count_of_people)) 

head(SocialData.t) 
head(SocialData.w) 

,並提供:?

> head(SocialData.t) 
    A count_of_people 
1 1  1.6094379 
2 2  1.3862944 
3 3  1.3862944 
4 4  1.7917595 
5 5  0.6931472 
6 6  1.0986123 
> head(SocialData.w) 
    A count_of_people 
1 1  1.6094379 
2 2  1.3862944 
3 3  1.3862944 
4 4  1.7917595 
5 5  0.6931472 
6 6  1.0986123 

within()調用看起來OK(除了在log()呼叫冗餘SocialData$是否指定從within()呼叫切換到SocialData對象的輸出。如果沒有,你創建了一個新的數據框與修改,然後打印或丟棄它,而不改變原來的SocialData對象。