কিভাবে একটি ডেটা ফ্রেম কলামকে সাংখ্যিক ধরণের রূপান্তর করবেন?


261

আপনি কীভাবে একটি ডেটা ফ্রেম কলামকে একটি সংখ্যার ধরণের রূপান্তর করবেন?

উত্তর:


267

যেহেতু (এখনও) কেউ চেক-চিহ্ন পেয়েছে না, তাই ধরে নিই যে আপনার মনে কিছু ব্যবহারিক সমস্যা রয়েছে, বেশিরভাগ কারণেই আপনি কোন ধরণের ভেক্টর রূপান্তর করতে চান তা নির্দিষ্ট করেননি numeric। আমি আপনাকে পরামর্শ দিচ্ছি যে transformআপনার কাজটি শেষ করার জন্য আপনাকে ফাংশন প্রয়োগ করতে হবে ।

এখন আমি কিছু "রূপান্তর বিস্মরণ" প্রদর্শন করতে চলেছি:

# create dummy data.frame
d <- data.frame(char = letters[1:5], 
                fake_char = as.character(1:5), 
                fac = factor(1:5), 
                char_fac = factor(letters[1:5]), 
                num = 1:5, stringsAsFactors = FALSE)

আমাদের এক নজরে দেখুন data.frame

> d
  char fake_char fac char_fac num
1    a         1   1        a   1
2    b         2   2        b   2
3    c         3   3        c   3
4    d         4   4        d   4
5    e         5   5        e   5

এবং আমাদের চালাতে দিন:

> sapply(d, mode)
       char   fake_char         fac    char_fac         num 
"character" "character"   "numeric"   "numeric"   "numeric" 
> sapply(d, class)
       char   fake_char         fac    char_fac         num 
"character" "character"    "factor"    "factor"   "integer" 

এখন আপনি সম্ভবত নিজেকে জিজ্ঞাসা করুন "অসঙ্গতি কোথায়?" ঠিক আছে, আমি আর-তে বেশ অদ্ভুত জিনিসগুলিতে ঝাঁপিয়ে পড়েছি এবং এটি সবচেয়ে বিভ্রান্তিকর বিষয় নয়, তবে এটি আপনাকে বিভ্রান্ত করতে পারে, বিশেষত আপনি যদি বিছানায় রোল দেওয়ার আগে এটি পড়ে থাকেন।

এখানে যায়: প্রথম দুটি কলাম হয় character। আমি ইচ্ছাকৃতভাবে 2 ডেকেছে য় এক fake_charcharacterডার্ক তার উত্তরে তৈরি করে এমন একটিতে এই পরিবর্তনশীলটির সাদৃশ্য স্পট করুন এটি আসলে কোনও numericalভেক্টর রূপান্তরিত character। 3 য় আর 4 র্থ কলামটি রয়েছে factorএবং শেষটি "খাঁটি" numeric

আপনি কাজে লাগাতে পারেন transformফাংশন, আপনি রূপান্তর করতে পারেন fake_charমধ্যে numeric, কিন্তু না charপরিবর্তনশীল নিজেই।

> transform(d, char = as.numeric(char))
  char fake_char fac char_fac num
1   NA         1   1        a   1
2   NA         2   2        b   2
3   NA         3   3        c   3
4   NA         4   4        d   4
5   NA         5   5        e   5
Warning message:
In eval(expr, envir, enclos) : NAs introduced by coercion

তবে আপনি যদি একই জিনিসটি করেন fake_charএবং char_fac, আপনি ভাগ্যবান হবেন, এবং কোনও এনএ না দিয়ে পালিয়ে যাবেন:

> transform(d, fake_char = as.numeric(fake_char), 
               char_fac = as.numeric(char_fac))

  char fake_char fac char_fac num
1    a         1   1        1   1
2    b         2   2        2   2
3    c         3   3        3   3
4    d         4   4        4   4
5    e         5   5        5   5

আপনি রুপান্তরিত সংরক্ষণ করেন data.frameএবং জন্য চেক modeএবং class, আপনি পাবেন:

> D <- transform(d, fake_char = as.numeric(fake_char), 
                    char_fac = as.numeric(char_fac))

> sapply(D, mode)
       char   fake_char         fac    char_fac         num 
"character"   "numeric"   "numeric"   "numeric"   "numeric" 
> sapply(D, class)
       char   fake_char         fac    char_fac         num 
"character"   "numeric"    "factor"   "numeric"   "integer"

সুতরাং, উপসংহারটি হ'ল: হ্যাঁ, আপনি characterভেক্টরটিকে numericএকটিতে রূপান্তর করতে পারবেন তবে কেবলমাত্র যদি এর উপাদানগুলি "রূপান্তরযোগ্য" হয় numericযদি characterভেক্টরটিতে কেবল একটি উপাদান থাকে তবে সেই ভেক্টরটিকে অন্যে রূপান্তর করার চেষ্টা করার সময় আপনি ত্রুটি পাবেন numerical

এবং শুধু আমার বক্তব্য প্রমাণ করতে:

> err <- c(1, "b", 3, 4, "e")
> mode(err)
[1] "character"
> class(err)
[1] "character"
> char <- as.numeric(err)
Warning message:
NAs introduced by coercion 
> char
[1]  1 NA  3  4 NA

এবং এখন, শুধুমাত্র মজা করার জন্য (বা অনুশীলন করুন), এই আদেশগুলির আউটপুট অনুমান করার চেষ্টা করুন:

> fac <- as.factor(err)
> fac
???
> num <- as.numeric(fac)
> num
???

প্যাট্রিক বার্নসের প্রতি শুভেচ্ছা! =)


6
ডেটা ফাইলগুলি পড়ার জন্য 'স্ট্রিংসএফ্যাক্টরস = ফলস' গুরুত্বপূর্ণ।
রবার্ট ব্রিসিটা

4
আমি জানি এটি পুরানো ... তবে ... আপনি কেন df $ নকল_চর <- as.integer (df $ নকল_চর) এর উপর রূপান্তর () বেছে নিয়েছিলেন? আরে একই ক্রিয়াকলাপ করার একাধিক উপায় রয়েছে এবং আমি এটি করার "সঠিক" উপায়টি বুঝতে পেরে আটকে যাই। ধন্যবাদ.
রিপভ্লান

সুতরাং ভুল </ c (1, "b", 3, 4, "e") কে সংখ্যার ভেক্টরে রূপান্তর করা একেবারেই অসম্ভব? এক্সেলে, এমন একটি বোতাম রয়েছে যা আপনাকে "সংখ্যায় রূপান্তর" করতে দেয়। কলামটিকে একটি সংখ্যাসূচক করে তোলে। আমি আর এটিকে অনুকরণ করার চেষ্টা করছি।
ফ্লাইটবিহীন

সতর্কতা! = ত্রুটি। মিশ্র সংখ্যা / অক্ষরকে সংখ্যায় রূপান্তর করতে আপনি ত্রুটি পাবেন না, আপনি একটি সতর্কতা এবং কিছু এনএ মান পাবেন।
গ্রেগর থমাস 13 '

136

এমন কিছু যা আমাকে সাহায্য করেছে: আপনার যদি রূপান্তর করতে (অথবা আরও কিছু পরে আরও) পরিবর্তনশীল থাকে তবে আপনি ব্যবহার করতে পারেন sapply

কিছুটা অযৌক্তিক কিন্তু কেবল উদাহরণস্বরূপ:

data(cars)
cars[, 1:2] <- sapply(cars[, 1:2], as.factor)

আপনার মধ্যে 3, 6-15 এবং 37 কলামগুলিতে ডেটাফ্রেমকে সংখ্যাসূচক রূপান্তরিত করতে হবে:

dat[, c(3,6:15,37)] <- sapply(dat[, c(3,6:15,37)], as.numeric)

1
উপরের কোডটিতে as.factor কলামের অক্ষর তৈরি করে
MySchizoBuddy

1
পরিবর্তিত পরিবর্তনের চেয়ে স্যাপ্পি ভাল, যখন
পরিবর্তকের

@ আমারস্কিজোবাডি সঠিক, কমপক্ষে আমার ডেটা দিয়ে। আসল ডিএফ "রূপান্তরিত" কলামগুলি কারণ হিসাবে গ্রহণ করবে না; তারা চরিত্র থাকবে। আপনি যদি ডানদিকে sapplyকলটি as.data.frame()আবদ্ধ করেন, যেমন @ মেহেরাদ মাহমুদিয়ান নীচে প্রস্তাব করেছেন, এটি কার্যকর হবে।
জানু

এই একটি ম্যাট্রিক্স জন্য কাজ করবে? আমি ঠিক একই কোড দিয়ে এটি চেষ্টা করছি, তবুও যখন আমি পরে একটি কলামের ক্লাস () পরীক্ষা করি, তখনও এটি "চরিত্র" বলে এবং "সংখ্যাসূচক" নয়
নামোর

87

যদি xডেটাফ্রেমের কলামের নাম datএবং xটাইপ ফ্যাক্টর হয় তবে ব্যবহার করুন:

as.numeric(as.character(dat$x))

3
as.characterআমি যা খুঁজছিলাম তা আসলে যুক্ত করা । অন্যথায় রূপান্তর কখনও কখনও ভুল হয়ে যায়। আমার ক্ষেত্রে অন্তত।
থিম হেনিস

1
কেন as.character প্রয়োজন? আমি একটি ত্রুটি পেয়েছিলাম: Error: (list) object cannot be coerced to type 'double'যদিও আমি যথাযথভাবে নিশ্চিত যে আমার ভেক্টরের কোনও অক্ষর / বিরামচিহ্ন নেই। তারপরে আমি চেষ্টা করেছি as.numeric(as.character(dat$x))এবং এটি কাজ করেছে। এখন আমি নিশ্চিত নই যে আমার কলামটি কেবলমাত্র পূর্ণসংখ্যা কিনা!
ভবঘুরে

2
যদি আপনি as.numericটিকে কোনও ফ্যাক্টারে রূপান্তর করেন তবে এটি স্তরগুলিকে সংখ্যায় রূপান্তর করবে আসল মানগুলিতে নয়। সুতরাং aschahater প্রথমে উপাদানটিকে চরিত্র এবং তারপরে as.numeric হিসাবে রূপান্তরিত করা দরকার
MySchizoBuddy

এটি এখানে সেরা উত্তর
mitoRibo

25

আমি একটি মন্তব্য যোগ করতে হবে (ক্যান্ট কম রেটিং)

কেবল ব্যবহারকারী 276042 এবং প্যাংরেটজ যুক্ত করতে

dat$x = as.numeric(as.character(dat$x))

এটি বিদ্যমান কলামের মানগুলিকে ওভাররাইড করবে


16

যদিও আপনার প্রশ্নটি কঠোরভাবে সংখ্যাসূচকভাবে রয়েছে, এমন অনেক রূপান্তর রয়েছে যা আর শুরু করার সময় বোঝা মুশকিল I'll এই প্রশ্নের অনুরূপ এই প্রশ্নের

প্রকার রূপান্তরটি আরে ব্যথা হতে পারে কারণ (১) কারণগুলি সরাসরি সংখ্যায় রূপান্তরিত হতে পারে না, তাদের প্রথমে অক্ষর শ্রেণিতে রূপান্তর করা দরকার, (২) তারিখগুলি একটি বিশেষ ক্ষেত্রে যা আপনার সাধারণত আলাদাভাবে মোকাবেলা করতে হবে, এবং (3) ডেটা ফ্রেম কলামগুলি জুড়ে লুপিং করা জটিল can ভাগ্যক্রমে, "tidyvers" বেশিরভাগ সমস্যার সমাধান করেছে।

এই সমাধানটি mutate_each()ডেটা ফ্রেমের সমস্ত কলামে একটি ফাংশন প্রয়োগ করতে ব্যবহার করে। এই ক্ষেত্রে, আমরা type.convert()ফাংশনটি প্রয়োগ করতে চাই , যা স্ট্রিংগুলিকে এটির সংখ্যায় রূপান্তরিত করে can কারণ আর উপাদানগুলিকে পছন্দ করে (কেন তা নিশ্চিত নয়) এমন অক্ষর কলামগুলিতে যে চরিত্রটি থাকা উচিত সেগুলি ফ্যাক্টারে পরিবর্তিত হয়। এটি ঠিক করার জন্য, mutate_if()ফাংশনটি কলামগুলি সনাক্ত করতে ব্যবহৃত হয় যা উপাদান এবং চরিত্রটিতে পরিবর্তিত হয়। সর্বশেষে, আমি দেখাতে চেয়েছিলাম যে লুব্রিডেট কীভাবে চরিত্র শ্রেণিতে টাইমস্ট্যাম্পটিকে ডেট-টাইমে পরিবর্তন করতে ব্যবহার করা যেতে পারে কারণ এটি প্রায়শই প্রাথমিকদের জন্যও একটি স্টিকিং ব্লক।


library(tidyverse) 
library(lubridate)

# Recreate data that needs converted to numeric, date-time, etc
data_df
#> # A tibble: 5 × 9
#>             TIMESTAMP SYMBOL    EX  PRICE  SIZE  COND   BID BIDSIZ   OFR
#>                 <chr>  <chr> <chr>  <chr> <chr> <chr> <chr>  <chr> <chr>
#> 1 2012-05-04 09:30:00    BAC     T 7.8900 38538     F  7.89    523  7.90
#> 2 2012-05-04 09:30:01    BAC     Z 7.8850   288     @  7.88  61033  7.90
#> 3 2012-05-04 09:30:03    BAC     X 7.8900  1000     @  7.88   1974  7.89
#> 4 2012-05-04 09:30:07    BAC     T 7.8900 19052     F  7.88   1058  7.89
#> 5 2012-05-04 09:30:08    BAC     Y 7.8900 85053     F  7.88 108101  7.90

# Converting columns to numeric using "tidyverse"
data_df %>%
    mutate_all(type.convert) %>%
    mutate_if(is.factor, as.character) %>%
    mutate(TIMESTAMP = as_datetime(TIMESTAMP, tz = Sys.timezone()))
#> # A tibble: 5 × 9
#>             TIMESTAMP SYMBOL    EX PRICE  SIZE  COND   BID BIDSIZ   OFR
#>                <dttm>  <chr> <chr> <dbl> <int> <chr> <dbl>  <int> <dbl>
#> 1 2012-05-04 09:30:00    BAC     T 7.890 38538     F  7.89    523  7.90
#> 2 2012-05-04 09:30:01    BAC     Z 7.885   288     @  7.88  61033  7.90
#> 3 2012-05-04 09:30:03    BAC     X 7.890  1000     @  7.88   1974  7.89
#> 4 2012-05-04 09:30:07    BAC     T 7.890 19052     F  7.88   1058  7.89
#> 5 2012-05-04 09:30:08    BAC     Y 7.890 85053     F  7.88 108101  7.90

মনে রাখবেন যে আপনি যদি এর mutate_all(type.convert, as.is=TRUE)পরিবর্তে ব্যবহার করেন তবে আপনি কমান্ডটি ছোট করতে mutate_all(type.convert)এড়াতে / এড়াতে পারবেন mutate_if(is.factor, as.character)as.isএটি একটি যুক্তি যা type.convert()এটি নির্দেশ করে যে এটি স্ট্রিংগুলিকে অক্ষর হিসাবে বা উপাদান হিসাবে রূপান্তর করতে হবে। ডিফল্টরূপে, as.is=FALSEইন type.convert()(অর্থাত্, অক্ষর শ্রেণীর পরিবর্তে স্ট্রিংগুলি ফ্যাক্টর শ্রেণিতে রূপান্তর করে)।
এলসি-ডেটাসাইটিস্ট

15

টিম সঠিক, এবং শেনের একটি বাদ আছে। এখানে অতিরিক্ত উদাহরণ রয়েছে:

R> df <- data.frame(a = as.character(10:15))
R> df <- data.frame(df, num = as.numeric(df$a), 
                        numchr = as.numeric(as.character(df$a)))
R> df
   a num numchr
1 10   1     10
2 11   2     11
3 12   3     12
4 13   4     13
5 14   5     14
6 15   6     15
R> summary(df)
  a          num           numchr    
 10:1   Min.   :1.00   Min.   :10.0  
 11:1   1st Qu.:2.25   1st Qu.:11.2  
 12:1   Median :3.50   Median :12.5  
 13:1   Mean   :3.50   Mean   :12.5  
 14:1   3rd Qu.:4.75   3rd Qu.:13.8  
 15:1   Max.   :6.00   Max.   :15.0  
R> 

আমাদের data.frameএখন ফ্যাক্টর কলামের একটি সংক্ষিপ্তসার (গণনা) এবং as.numeric()--- এর সংখ্যার সংক্ষিপ্তসার রয়েছে --- যা ভুল হিসাবে এটি সংখ্যার ফ্যাক্টর স্তর পেয়েছে --- এবং এর (সঠিক) সংক্ষিপ্তসার as.numeric(as.character())


1
আমার আনন্দ. এটি ভাষার অন্যতম নির্লজ্জ কোণ এবং আমি মনে করি এটি এখানে পুরানো 'আর গটচস' প্রশ্নে বৈশিষ্ট্যযুক্ত।
ডার্ক এডেলবুয়েটেল

14

নিম্নলিখিত কোডের সাহায্যে আপনি সমস্ত ডেটা ফ্রেম কলামগুলিকে সংখ্যায় রূপান্তর করতে পারেন (এক্স এমন ডেটা ফ্রেম যা আমরা এর কলামগুলিকে রূপান্তর করতে চাই):

as.data.frame(lapply(X, as.numeric))

এবং পুরো ম্যাট্রিক্সকে সংখ্যায় রূপান্তর করার জন্য আপনার দুটি উপায় আছে: হয়:

mode(X) <- "numeric"

বা:

X <- apply(X, 2, as.numeric)

বিকল্প হিসাবে আপনি data.matrixফাংশনটি সমস্তকে সংখ্যায় রূপান্তর করতে ব্যবহার করতে পারেন , যদিও সচেতন হন যে কারণগুলি সঠিকভাবে রূপান্তরিত হতে পারে না, তাই সবকিছুকে characterপ্রথমে রূপান্তর করা আরও নিরাপদ :

X <- sapply(X, as.character)
X <- data.matrix(X)

আমি সাধারণত শেষটি ব্যবহার করি যদি আমি একই সাথে ম্যাট্রিক্স এবং সংখ্যায় রূপান্তর করতে চাই


12

আপনি যদি সমস্যাগুলি নিয়ে যান তবে:

as.numeric(as.character(dat$x))

আপনার দশমিক চিহ্নগুলি একবার দেখুন। যদি সেগুলি "," পরিবর্তে "হয়"। (যেমন "5,3") উপরের কাজ করবে না work

একটি সম্ভাব্য সমাধান হ'ল:

as.numeric(gsub(",", ".", dat$x))

আমি বিশ্বাস করি যে কিছু অ ইংরেজীভাষী দেশে এটি প্রচলিত।


8

সর্বজনীন উপায় ব্যবহার করে type.convert()এবং rapply():

convert_types <- function(x) {
    stopifnot(is.list(x))
    x[] <- rapply(x, utils::type.convert, classes = "character",
                  how = "replace", as.is = TRUE)
    return(x)
}
d <- data.frame(char = letters[1:5], 
                fake_char = as.character(1:5), 
                fac = factor(1:5), 
                char_fac = factor(letters[1:5]), 
                num = 1:5, stringsAsFactors = FALSE)
sapply(d, class)
#>        char   fake_char         fac    char_fac         num 
#> "character" "character"    "factor"    "factor"   "integer"
sapply(convert_types(d), class)
#>        char   fake_char         fac    char_fac         num 
#> "character"   "integer"    "factor"    "factor"   "integer"

3
এটি সর্বাধিক নমনীয় সমাধান - কিছু উপায়ে প্রাপ্য!
রিচার্ড বর্ডার

একটি শীর্ষ উত্তর হওয়া উচিত। as.is = TRUEআপনি যদি নিজের চরিত্রটিকে সংখ্যাসূচক বা উপাদানগুলিতে রূপান্তর করতে চান তবে কেবল সরিয়ে ফেলুন
qfazille

প্রথম আর্গুমেন্টটি ভুলক্রমে ভুল হিসাবে matrixসংখ্যার পরিবর্তনগুলি টাইপ করে এমন একটি classes=matrixডেটা ফ্রেমে কলামের গুচ্ছ পরিবর্তন করার চেষ্টা করতে হবে মোড চরিত্রের
অ্যাড-সেমি-কলোন

1
এটি বিষয়টির সেরা উত্তর।
ইউক

3

একটি ডেটা ফ্রেম কলামকে সংখ্যায় রূপান্তর করতে আপনার এখনই করতে হবে: -

সংখ্যার গুণক: -

data_frame$column <- as.numeric(as.character(data_frame$column))

আবার এই উত্তরটি বর্তমানের উত্তর সেটগুলিতে কিছু যুক্ত করে না। এছাড়াও, কোনও ফ্যাক্টরটিকে সংখ্যায় রূপান্তর করার পক্ষে এটি পছন্দসই উপায় নয়। পছন্দসই উপায়ের জন্য stackoverflow.com/q/3418128 দেখুন ।
বেনবার্নস

আরও ভাল উত্তর ছিল:sapply(data_frame,function(x) as.numeric(as.character(x)))
ডেটা-ফ্রেম-জিজি

2

যদিও অন্যেরা বিষয়টিকে খুব ভালভাবে কভার করেছেন, আমি এই অতিরিক্ত দ্রুত চিন্তা / ইঙ্গিতটি যুক্ত করতে চাই। আপনি অক্ষরগুলি কেবলমাত্র সংখ্যায় অন্তর্ভুক্ত রয়েছে কিনা তা আগে থেকেই পরীক্ষা করতে আপনি রেজিএক্সপ ব্যবহার করতে পারেন।

for(i in seq_along(names(df)){
     potential_numcol[i] <- all(!grepl("[a-zA-Z]",d[,i]))
}
# and now just convert only the numeric ones
d <- sapply(d[,potential_numcol],as.numeric)

আরও পরিশীলিত নিয়মিত এক্সপ্রেশন এবং একটি ঝরঝরে কেন তাদের ক্ষমতা শিখতে / অনুভব করতে হয় তা সত্যিই দুর্দান্ত ওয়েবসাইটটি দেখুন: http://regexr.com/


1

চর কলামগুলি বিদ্যমান থাকতে পারে তা বিবেচনা করে এটি কলামের ধরণের এক্সেল শিটের স্বয়ংক্রিয়ভাবে উত্তর পান ইন অ্যাবডাউয়ের উপর ভিত্তি করে :

makenumcols<-function(df){
  df<-as.data.frame(df)
  df[] <- lapply(df, as.character)
  cond <- apply(df, 2, function(x) {
    x <- x[!is.na(x)]
    all(suppressWarnings(!is.na(as.numeric(x))))
  })
  numeric_cols <- names(df)[cond]
  df[,numeric_cols] <- sapply(df[,numeric_cols], as.numeric)
  return(df)
}
df<-makenumcols(df)

0

আমার পিসিতে (আর v.3.2.3), applyবা sapplyত্রুটি দিন। lapplyভাল কাজ করে.

dt[,2:4] <- lapply(dt[,2:4], function (x) as.factor(as.numeric(x)))

0

যদি ডেটাফ্রেমে একাধিক ধরণের কলাম থাকে তবে কিছু অক্ষর, কিছু সংখ্যাসূচককে কেবলমাত্র কলামগুলিতে সংখ্যাসূচক মানগুলিতে রূপান্তর করতে চেষ্টা করুন:

for (i in 1:length(data[1,])){
  if(length(as.numeric(data[,i][!is.na(data[,i])])[!is.na(as.numeric(data[,i][!is.na(data[,i])]))])==0){}
  else {
    data[,i]<-as.numeric(data[,i])
  }
}

0

with hablar :: রূপান্তর

একাধিক কলাম সহজেই বিভিন্ন ডেটা ধরণের রূপান্তর করতে আপনি ব্যবহার করতে পারেন hablar::convert। সাধারণ বাক্য গঠন: df %>% convert(num(a))কলামটি ডিএফ থেকে সংখ্যায় রূপান্তর করে।

বিস্তারিত উদাহরণ

সমস্ত কলামকে mtcarsঅক্ষরে রূপান্তর করতে দেয় ।

df <- mtcars %>% mutate_all(as.character) %>% as_tibble()

> df
# A tibble: 32 x 11
   mpg   cyl   disp  hp    drat  wt    qsec  vs    am    gear  carb 
   <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
 1 21    6     160   110   3.9   2.62  16.46 0     1     4     4    
 2 21    6     160   110   3.9   2.875 17.02 0     1     4     4    
 3 22.8  4     108   93    3.85  2.32  18.61 1     1     4     1    

সাথে hablar::convert:

library(hablar)

# Convert columns to integer, numeric and factor
df %>% 
  convert(int(cyl, vs),
          num(disp:wt),
          fct(gear))

ফলাফল স্বরূপ:

# A tibble: 32 x 11
   mpg     cyl  disp    hp  drat    wt qsec     vs am    gear  carb 
   <chr> <int> <dbl> <dbl> <dbl> <dbl> <chr> <int> <chr> <fct> <chr>
 1 21        6  160    110  3.9   2.62 16.46     0 1     4     4    
 2 21        6  160    110  3.9   2.88 17.02     0 1     4     4    
 3 22.8      4  108     93  3.85  2.32 18.61     1 1     4     1    
 4 21.4      6  258    110  3.08  3.22 19.44     1 0     3     1   

0

অক্ষরকে সংখ্যায় রূপান্তর করতে আপনাকে প্রয়োগ করে এটিকে ফ্যাক্টারে রূপান্তর করতে হবে

BankFinal1 <- transform(BankLoan,   LoanApproval=as.factor(LoanApproval))
BankFinal1 <- transform(BankFinal1, LoanApp=as.factor(LoanApproval))

আপনাকে একই ডেটা দিয়ে দুটি কলাম তৈরি করতে হবে, কারণ একটি কলাম সংখ্যায় রূপান্তর করতে পারে না। আপনি যদি একটি রূপান্তর করেন তবে এটি নীচের ত্রুটি দেয়

transform(BankData, LoanApp=as.numeric(LoanApproval))
Warning message:
  In eval(substitute(list(...)), `_data`, parent.frame()) :
  NAs introduced by coercion

সুতরাং, একই তথ্য দুটি কলাম করার পরে প্রয়োগ

BankFinal1 <- transform(BankFinal1, LoanApp      = as.numeric(LoanApp), 
                                    LoanApproval = as.numeric(LoanApproval))

এটি সাফল্যের সাথে অক্ষরে রূপান্তর করবে



0

আপনি যদি বিষয়গুলি সংরক্ষণের বিষয়ে চিন্তা না করেন এবং এটি কোনও সংখ্যায় রূপান্তরিত হতে পারে এমন কোনও কলামে প্রয়োগ করতে চান তবে আমি নীচের স্ক্রিপ্টটি ব্যবহার করেছি। যদি ডিএফ আপনার মূল ডেটাফ্রেম হয় তবে আপনি নীচের স্ক্রিপ্টটি ব্যবহার করতে পারেন।

df[] <- lapply(df, as.character)
df <- data.frame(lapply(df, function(x) ifelse(!is.na(as.numeric(x)), as.numeric(x),  x)))

আমি শেন এবং জোড়ানের সমাধান বিটিডব্লিউ উল্লেখ করেছি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.