我有以下数据
> head(duomframe)
DNSB.Ražuva X1 X1.1 X0 X0.1 X40 X8.013.54 X1.2 X0.2 X0.3 X0.4 X0.5
1 UAB Antakalnio būstas 1 1 0 0 51 511,55 0 1 0 0 0
2 UAB Antakalnio būstas 1 0 1 0 54 519,46 0 1 0 0 0
3 UAB Antakalnio būstas 1 0 1 0 42 492,7 0 1 0 0 0
4 UAB Antakalnio būstas 1 0 1 0 51 515,68 0 0 0 0 0
5 UAB Antakalnio būstas 1 0 1 0 49 2.308,78 0 1 0 0 0
6 UAB Antakalnio būstas 1 0 1 0 63 381,75 0 1 0 0 0
X0.6 X7.197.16 X78.23 X4 X1.3 X0.7 X0.8 X7.783.31 X2 X1.4 X42.22 X14 X33.33
1 0 0 86.80 2 4 0 0 173,36 1 1 58.31 5 189,79
2 0 0 53.67 1 2 0 3 204,85 0 1 66.29 2 140
3 0 0 52.13 2 3 0 0 160,73 0 2 93.69 2 119,03
4 1 415,68 45.19 3 1 2 0 641,54 0 1 53.56 6 102,11
5 0 0 103.44 3 1 3 0 113,08 0 2 122.45 5 527,61
6 0 0 49.75 4 3 0 0 384,62 0 3 75.09 3 69,46
X0.9 X12
1 0 4
2 1 3
3 2 4
4 0 6
5 0 5
6 1 4
我需要将除第一个之外的所有列从字符类型更改为数字。我找到了关于转换一列的信息,但在这里我还有更多。我尽管如此,我试图使用一栏的书面提示,但它没有用。
例如,transform(duomframe, place = as.numeric(place))
(这里的地方是标有0和1值的第二列)。
通过这种方式,我只得到了一些意思。
我还通过创建假数据来尝试这个:
place2<-duomframe[place]
d <- data.frame(place2 = place[1:421],
fake_place = as.character(1:421),
fac = factor(1:421),
place_fac = factor(letters[1:421]),
num = 1:421, stringsAsFactors = FALSE)
transform(d, fake_place = as.numeric(fake_place), place_fac = as.numeric(place_fac))
但它也不起作用
mydata<-duomframe
mydata <- within(mydata, {
place <- as.numeric(as.character(place))
man <- as.numeric(as.character(man))
....
})
这个也是
我的数据中有421行和27列。
答案 0 :(得分:0)
duomframe[,-1] <- lapply(duomframe[,-1], function(x) {as.numeric(gsub(",", "", x))})
duomframe[1:5, 1:7]
# DNSB.Ražuva X1 X1.1 X0 X0.1 X40 X8.013.54
#1 UAB Antakalnio būstas 1 1 0 0 51 51155.00000
#2 UAB Antakalnio būstas 1 0 1 0 54 51946.00000
#3 UAB Antakalnio būstas 1 0 1 0 42 4927.00000
#4 UAB Antakalnio būstas 1 0 1 0 51 51568.00000
#5 UAB Antakalnio būstas 1 0 1 0 49 2.30878